python 线性回归预测示例

数据集为简单的表格,包括:年份,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']])

猜你喜欢

转载自blog.csdn.net/weixin_42500276/article/details/82866240