我正在尝试测试有投票的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))