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

2024-05-14 14:03:02 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: 数据fromimportdatavalsklearnscorecross

热门问题