我想读取csv文件信息,以便算法能够猜测个人的性别。 该程序通过身高,体重和性别鞋码来猜测人们。
但是我遇到此错误,无法解决它:
y.append(line[4])
IndexError:列表索引超出范围
height,weight,n_shoes,sexuality
190,88,44,male
167,66,36,female
182,80,42,male
177,78,43,male
164,59,35,female
183,79,40,male
158,57,36,female
155,52,34,female
193,89,45,male
163,54,35,female
代码:
import csv
from sklearn import tree
x = []
y = []
with open('people.csv' , 'r') as csvfile:
data = csv.reader(csvfile)
for line in data:
x.append(line[1:4])
y.append(line[4])
clf = tree.DecisionTreeClassifier()
clf = clf.fit(x , y)
new_data = [[190,89,43] , [160,56,39]]
answer = clf.predict(new_data)
print(answer[0])
print(answer[1])
我想读取csv文件信息,以便算法可以猜测个人的性别。
从new_data
变量中读取新数据并猜测人物的个性。
例如:
[190 , 89 , 42] ==> male
[162 , 59 , 37] ==> female
答案 0 :(得分:1)
索引是从零开始的……“第四”项是line[3]
。更改您的循环以使用:
for line in data:
x.append(line[:3])
y.append(line[3])
(在这种情况下,第四项也是最后项...因此,替代项是line[-1]
)
答案 1 :(得分:0)
正如另一个答案所说,您需要一个小的解决方法:
import csv
from sklearn import tree
x = []
y = []
with open('people.csv' , 'r') as csvfile:
data = csv.reader(csvfile)
for line in data:
x.append(line[0:3])
y.append(line[3])
clf = tree.DecisionTreeClassifier()
clf = clf.fit(x , y)
new_data = [[190,89,43] , [160,56,39]]
answer = clf.predict(new_data)
print(answer[0])
print(answer[1])
假设您要选择前三个元素,我将y.append(line[4])
更改为y.append(line[3])
和x.append(line[0:3])
。
为什么会这样:
列表索引从0开始,您假设它将从1开始。
This文章可能会对您有所帮助。