我试图在scikit中使用算法 - 学习根据大量输入预测输出。我似乎得到错误'太多索引'返回,但无法弄清楚为什么。
CSV文件培训:
1.1 0.2 0.1 0 0.12 0.1
1.4 0.2 0.1 0.1 0.14 0.1
0.1 0.1 0.1 0 0.26 0.1
24.5 0.1 0 0.1 0.14 0.1
0.1 0.1 0.1 0 0.25 0.1
代码:
fileCSVTraining = genfromtxt('TrainingData.csv', delimiter=',', dtype=None)
#Define first 6 rows of data as the features
t = fileCSVTraining[:, 6:]
#Define which column to put prediction in
r = fileCSVTraining[:, 0-6:]
#Create and train classifier
x, y = r, t
clf = LinearSVC()
clf = clf.fit(x, y)
#New data to predict
X_new = [1.0, 2.1, 3.0, 2.4, 2.1]
b = clf.predict(X_new)
错误:
t = fileCSVTraining[:, 6:]
IndexError: too many indices
答案 0 :(得分:4)
根据评论,我认为你想要:
fileCSVTraining = genfromtxt('TrainingData.csv')
然后,要获得“前6行”,您将使用
t = fileCSVTraining[:6, :]
(我假设您的实际数据文件比您显示的长。您的示例只有5行。)
我怀疑你使用数组索引来获取r
也是错误的。
答案 1 :(得分:2)
请打印您的x
和y
变量,您可能会看到数据无效的原因并进行相应修改。
也是最后一行:
X_new = [1.0, 2.1, 3.0, 2.4, 2.1]
b = clf.predict(X_new)
应该是:
X_new = [[1.0, 2.1, 3.0, 2.4, 2.1]]
b = clf.predict(X_new)
因为预测需要一组样本((n_new_samples, n_features)
的二维数组),而不是一个样本。
答案 2 :(得分:0)
获取r和t的数组索引不正确。使用:
t = fileCSVTraining[:, 1-0:]
获取所需的训练数据,离开预测列。
答案 3 :(得分:0)
指定dtype = float也很重要,因为“None”将允许整数(如果数据中有任何数据)包含在数组中,这将强制1-D数组而不是2-D数组。如图所示,索引在1-D上不起作用。