模型的特征数量必须与输入匹配
Number of features of the model must match the input
出于某种原因,此数据集的特征被解释为行,"Model n_features is 16 and input n_features is 18189" 其中 18189 是行数,16 是正确的特征列表。
可疑代码在这里:
for var in cat_cols:
num = LabelEncoder()
train[var] = num.fit_transform(train[var].astype('str'))
train['output'] = num.fit_transform(train['output'].astype('str'))
for var in cat_cols:
num = LabelEncoder()
test[var] = num.fit_transform(test[var].astype('str'))
test['output'] = num.fit_transform(test['output'].astype('str'))
clf = RandomForestClassifier(n_estimators = 10)
xTrain = train[list(features)].values
yTrain = train["output"].values
xTest = test[list(features)].values
xTest = test["output"].values
clf.fit(xTrain,yTrain)
clfProbs = clf.predict(xTest)#Error happens here.
有人有什么想法吗?
样本训练日期 csv
tr4,42,"JobCat4","divorced","tertiary","yes",2,"yes","no","unknown",5,"may",0,1,-1,0,"unknown","TypeA"
样本测试数据csv
tst2,47,"JobCat3","married","unknown","no",1506,"yes","no","unknown",5,"may",0,1,-1,0,"unknown",?
您有一个小错字 - 您创建了变量 xTest
,然后立即覆盖了不正确的内容。将违规行更改为:
xTest = test[list(features)].values
yTest = test["output"].values
出于某种原因,此数据集的特征被解释为行,"Model n_features is 16 and input n_features is 18189" 其中 18189 是行数,16 是正确的特征列表。
可疑代码在这里:
for var in cat_cols:
num = LabelEncoder()
train[var] = num.fit_transform(train[var].astype('str'))
train['output'] = num.fit_transform(train['output'].astype('str'))
for var in cat_cols:
num = LabelEncoder()
test[var] = num.fit_transform(test[var].astype('str'))
test['output'] = num.fit_transform(test['output'].astype('str'))
clf = RandomForestClassifier(n_estimators = 10)
xTrain = train[list(features)].values
yTrain = train["output"].values
xTest = test[list(features)].values
xTest = test["output"].values
clf.fit(xTrain,yTrain)
clfProbs = clf.predict(xTest)#Error happens here.
有人有什么想法吗?
样本训练日期 csv
tr4,42,"JobCat4","divorced","tertiary","yes",2,"yes","no","unknown",5,"may",0,1,-1,0,"unknown","TypeA"
样本测试数据csv
tst2,47,"JobCat3","married","unknown","no",1506,"yes","no","unknown",5,"may",0,1,-1,0,"unknown",?
您有一个小错字 - 您创建了变量 xTest
,然后立即覆盖了不正确的内容。将违规行更改为:
xTest = test[list(features)].values
yTest = test["output"].values