Python决策树算法代码出现无效语法错误,请求排查修复
问题排查与修复方案
1. 核心语法错误(报错行)
x_train=[:-1]和x_test=[-1:]是无效Python语法——切片操作必须基于某个可迭代对象,这里你要对之前生成的x_vector做切片,正确写法:
x_train = x_vector[:-1] x_test = x_vector[-1:]
2. 其他隐藏错误修复
除了上述语法问题,代码里还有多处拼写、语法及API使用错误,一并修正:
- 变量名错误:
x-feature=data[cols_to_retain]中的减号会被识别为减法运算,改为下划线命名:x_feature = data[cols_to_retain] - 类名拼写错误:
StandardScalar应为StandardScaler(sklearn标准化类的正确名称) - 类实例化缺失:
le=LabelEncoder需要实例化对象,改为le = LabelEncoder() - 参数拼写错误:
tree.DecisionTreeClassifier(criteron='entropy')中的criteron拼写错误,应为criterion - API调用错误:
DecisionTreeClassifier没有fit_transform方法,训练模型应使用fit方法:clf.fit(x_train, y_train) - 字典方法调用错误:
x_feature.T.to_dict.values()需先调用to_dict()方法,改为x_feature.T.to_dict().values()
修复后的完整代码
import pandas as pd import numpy as np from sklearn.preprocessing import LabelEncoder from sklearn.feature_extraction import DictVectorizer from sklearn import tree from sklearn.metrics import accuracy_score,classification_report import warnings from sklearn.preprocessing import StandardScaler from sklearn.neural_networks import MLPClassifier warnings.filterwarnings(action='ignore',category=DeprecationWarning) data=pd.read_csv('data.csv') cols_to_retain=[] # 需手动填充要用作特征的列名,否则x_feature为空 x_feature=data[cols_to_retain] x_dict=x_feature.T.to_dict().values() vect=DictVectorizer(sparse=False) x_vector=vect.fit_transform(x_dict) print(x_vector) x_train = x_vector[:-1] x_test = x_vector[-1:] print('Train set') print(x_train) print('Test set') print(x_test) le=LabelEncoder() y_train=le.fit_transform(data['Goal'][:-1]) clf=tree.DecisionTreeClassifier(criterion='entropy') clf.fit(x_train,y_train) print('Test Data') print(le.inverse_transform(clf.predict(x_test)))
额外提醒
cols_to_retain目前是空列表,运行时会导致x_feature为空DataFrame,需补充你要使用的特征列名- 若
data['Goal']存在缺失值,LabelEncoder会报错,建议提前处理数据缺失问题
内容的提问来源于stack exchange,提问作者Ryan Fernandes
相关产品推荐
相关产品推荐

