我正在尝试测试投票adaBoost分类器的这个实现
我的数据集有650个三元组G1、G2、G3,其中G1和G2包含在[1-20]中,G3基于G1和G2为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))
您应该从X变量中删除G3列,因为这是您试图预测的
这段代码会起作用,应该会帮助你
相关问题 更多 >
编程相关推荐