Scikit learn ValueError:模型的特征数必须与输入匹配。模型n_特征为3,输入n_特征为2,预测=模型预测(X_测试)
这是我的密码:Scikit learn ValueError:模型的特征数必须与输入匹配。模型n_特征为3,输入n_特征为2,预测=模型预测(X_测试),scikit-learn,Scikit Learn,这是我的密码: import pandas as pd from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score event_data = pd.read_excel("Jacob's Farming Contest.xlsx") event_da
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
event_data = pd.read_excel("Jacob's Farming Contest.xlsx")
event_data.fillna(0, inplace=True)
X = event_data.drop(columns=['First Crop', 'Second Crop', 'Third Crop'])
y = event_data.drop(columns=['Year', 'Month', 'Day'])
X_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model = DecisionTreeClassifier()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
score = accuracy_score(y_test, predictions)
score
下面是错误日志:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-85-ff3a4a371ca9> in <module>
12 model = DecisionTreeClassifier()
13 model.fit(X_train, y_train)
---> 14 predictions = model.predict(X_test)
15
16
C:\ProgramData\Anaconda3\lib\site-packages\sklearn\tree\_classes.py in predict(self, X, check_input)
425 """
426 check_is_fitted(self)
--> 427 X = self._validate_X_predict(X, check_input)
428 proba = self.tree_.predict(X)
429 n_samples = X.shape[0]
C:\ProgramData\Anaconda3\lib\site-packages\sklearn\tree\_classes.py in _validate_X_predict(self, X, check_input)
394 n_features = X.shape[1]
395 if self.n_features_ != n_features:
--> 396 raise ValueError("Number of features of the model must "
397 "match the input. Model n_features is %s and "
398 "input n_features is %s "
ValueError: Number of features of the model must match the input. Model n_features is 3 and input n_features is 2
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在里面
12模型=DecisionTreeClassifier()
13.模型安装(X_系列、y_系列)
--->14预测=模型预测(X_检验)
15
16
C:\ProgramData\Anaconda3\lib\site packages\sklearn\tree\\预测中的class.py(self,X,check\u输入)
425 """
426检查是否已安装(自身)
-->427 X=自我验证X预测(X,检查输入)
428概率=自树预测(X)
429 n_样本=X.shape[0]
C:\ProgramData\Anaconda3\lib\site packages\sklearn\tree\\u classes.py in\u validate\u X\u predict(self,X,check\u输入)
394 n_特征=X.形状[1]
395如果self.n_特征!=n_特征:
-->396 raise VALUE ERROR(“模型的特征数量必须”
397“匹配输入。型号n_功能为%s和”
398“输入n_特征为%s”
ValueError:模型的特征数必须与输入匹配。模型n_特征数为3,输入n_特征数为2
我用其他输入(.xlsx文件)尝试了同样的方法,效果很好
以下是无法使用的文件:
以下是它的工作原理:
predictions=model.predict(X_test)
(大写X),看起来代码中甚至没有定义X_test
。尝试将其更改为X_test
(小写X)或更好,而不是定义X_test
(小写X),定义X_test'
(大写X)