使用具有多个模型的装袋算法

时间:2018-12-16 13:52:55

标签: python machine-learning ensemble-learning

我正在尝试为LasVegasTripAdvisorReviews-Dataset建立模型 使用装袋算法, 我有一个错误(不支持多标签和多输出分类) 您能帮我一下,告诉我如何解决错误

致谢
附件包含指向lasvegas dataset LasVegasTripAdvisorReviews-Dataset的链接

ST_DISTANCE

Stacktrace:


# Voting Ensemble for Classification
import pandas
from sklearn import model_selection
from sklearn.linear_model import LogisticRegression   

from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.ensemble import VotingClassifier,GradientBoostingClassifier,AdaBoostClassifier,RandomForestClassifier

url = "h:/LasVegasTripAdvisorReviews-Dataset.csv"
names = ['User country','Nr. reviews','Nr. hotel reviews','Helpful votes','Period of stay','Traveler type','Pool','Gym','Tennis court','Spa','Casino','Free internet','Hotel name','Hotel stars','Nr. rooms','User continent','Member years','Review month','Review weekday','Score']
dataframe = pandas.read_csv(url, names=names)
array = dataframe.values
X = array[:,:]
Y = array[:,:]
seed = 7
kfold = model_selection.KFold(n_splits=10, random_state=seed)
# create the sub models
estimators = []
model1 = AdaBoostClassifier()
estimators.append(('AdaBoost', model1))
model2 = GradientBoostingClassifier()
estimators.append(('GradientBoosting', model2))
model3 = RandomForestClassifier()
estimators.append(('RandomForest', model3))
# create the ensemble model
ensemble = VotingClassifier(estimators)
results = model_selection.cross_val_score(ensemble, X, Y, cv=kfold)
print(results.mean())

1 个答案:

答案 0 :(得分:0)

您所在的行:

    X = array[:,:]
    Y = array[:,:]

意味着您的特征矩阵(X)目标向量(Y)是相同的。

您只需选择仅一列作为您的 Y

例如,假设您希望您的最后一列 Y

然后,您应将以上几行更改为此:

X = values[:,:-1]
Y = values[:,-1:]

这应该可以解决您遇到的错误。您所犯的错误基本上意味着:我在Y中不支持多个列