adaBoost python中的投票数据和目标表单

我正在尝试测试有投票的adaBoost分类器的实现。

我的数据集具有650个三元组G1,G2,G3的形式,其中G1和G2包含在[1-20]中,并且基于G1和G2,G3为1或0。

从我所读的内容中,cross_val_score自己将训练和测试组中的输入数据分割开来,但是我在进行X,y初始化错误。如果我尝试使用整个数据集初始化X和y,则精度为100%,这似乎有些偏离。

我试图仅将G3值放入y,但得到的结果相同。

通常,我将数据分为训练和测试集,这使事情变得简单。

我在python或机器学习方面经验不足,但是我决定尝试一下。

能否请您解释一下X和y初始化应如何正常工作?

import os
import subprocess
import pandas as pd
import numpy as np

from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import VotingClassifier

input_file = "student_data_grades_only.csv"

data = pd.read_csv(input_file,header = 0)

X,y = data,data['G3']
print(X,y)

clf1 = LogisticRegression(random_state=1)
clf2 = RandomForestClassifier(n_estimators=50,random_state=1)
clf3 = GaussianNB()

eclf = VotingClassifier(
    estimators=[('lr',clf1),('rf',clf2),('gnb',clf3)],voting='hard')

for clf,label in zip([clf1,clf2,clf3,eclf],['Logistic Regression','Random Forest','naive Bayes','Ensemble']):
    scores = cross_val_score(clf,X,y,scoring='accuracy',cv=2)
    print("accuracy: %0.2f (+/- %0.2f) [%s]" % (scores.mean(),scores.std(),label))
iCMS 回答:adaBoost python中的投票数据和目标表单

您应该从X变量中删除G3列,因为这是您要预测的内容。

X,y = data.drop('G3'),data['G3']

此代码将起作用,并且应该会对您有所帮助。

本文链接:https://www.f2er.com/2271111.html

大家都在问