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)