数据集为简单的表格,包括:年份,GDP,全社会用电量三列数据。
#预测
def predict(data,LinearRegression):
Y_pred = LinearRegression.predict(data)
print(Y_pred)
return Y_pred
#训练模型并画图
def reg_huigui(data,label,test):
regr = LinearRegression() #线性回归
#regr = Ridge(alpha=10) #岭回归
#regr = Lasso(alpha=0.001) #Lasso回归
regr.fit(data.values,label.values)
Y_pred_train = regr.predict(data.values) #训练集的预测值
predict(test.values,regr) #预测
print('参数:',regr.coef_.astype(np.float32))
#对模型进行评估
from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_score
print("MSE:",mean_squared_error(label.values,Y_pred_train)) #误差
print("MAE:",mean_absolute_error(label.values,Y_pred_train))
print("R2:",r2_score(label.values,Y_pred_train))
#画图
#通过pandas读取为DataFrame,回归用的是矩阵数据而不是列表,数据为n个样品点和m个特征值,这里特征值只有一个因此换成nx1的矩阵
dataSet_x = data['GDP'].as_matrix(columns=None)
dataSet_x = np.array([dataSet_x]).T
#dataSet_y = label.as_matrix(columns=None)
dataSet_y = np.array([label]).T
print(dataSet_x,dataSet_y,Y_pred_train)
plt.scatter(dataSet_x,dataSet_y,color='black')
#用predic预测,这里预测输入x对应的值,进行画线
plt.plot(dataSet_x,Y_pred_train,color='r',linewidth=1)
plt.show()
def getData():
#数据数据为两列数据x和y,有表头
file = open('.../数据.xls','rb')
df = pd.read_excel(file,sheet_name='Sheet1')
test = pd.read_excel(file,sheet_name='Sheet3')
file.close()
return df,test
def main():
df,test = getData()
#获取数据和标注
reg_huigui(df[['年份','GDP']],df['全社会用电量'],test[['年份','GDP']])