我是机器学习的初学者,作为学习的一部分,我从UCI选择学生表现数据集。我想根据给出的特征预测学生的最终结果
我首先尝试使用两个主要且高度相关的特征G1和G2,它们是两次考试的分数。我使用了线性回归算法,得到了0.4或更低的精度
然后我在dataframe中的所有对象特性上尝试了特性工程,但精度仍然相同
如何提高分数的准确性
from matplotlib import pyplot as plt
import seaborn as sns
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import ElasticNet
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import ExtraTreesRegressor
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.svm import SVR
from sklearn.metrics import mean_squared_error, mean_absolute_error, median_absolute_error,accuracy_score
df = pd.read_csv('student-mat.csv',sep=';')
df2 = pd.read_csv('student-por.csv',sep=';')
df = [df,df2]
df = pd.concat(df)
df = pd.get_dummies(df)
X = df.drop('G3',axis=1)
y = df['G3']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.1, random_state=42)
model = LinearRegression()
model.fit(X_train,y_train)
y_pred = model.predict(X_test)
y_pred = [int(round(i)) for i in y_pred]
accuracy_score(y_test,y_pred)
在连续变量上计算的精度不是很有用。您可以改为使用均方误差,这与连续输出相关
至于改进模型,您可以尝试使用不同的工具来确定最相关的特性。我建议使用
statsmodels
API(https://www.statsmodels.org/stable/regression.html)进行更深入的分析相关问题 更多 >
编程相关推荐