数据挖掘分类算法——回归扩展练习

1)请将你的回归系数和每个特征名称一一对应,结果可以是任何形式(dataframe、array、list、dict……)

from  sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import fetch_california_housing
import pandas as pd
import numpy as np
# 准备工作
housevalue = fetch_california_housing()
print(housevalue) #预览数据
x= pd.DataFrame(housevalue.data) #将数据存为dataframe结构
print('数据维度',x.shape) #查看维度

y= housevalue.target
# print(y)
print(housevalue.feature_names)
x.columns=housevalue.feature_names
print(x)
# 将特证名赋给x的列作为列名



pd.concat([pd.DataFrame(housevalue.data),pd.DataFrame(housevalue.target)],axis=1)
Xtrain,Xtest,Ytrain,Ytest = train_test_split(housevalue.data,housevalue.target,test_size=0.2,random_state=30)
# 划分训练集、测试集
print(Xtest)
print(Xtrain)

clf_reg=LinearRegression()
clf_reg.fit(Xtrain,Ytrain)
Ypred = clf_reg.predict(Xtest)
print(Ypred)
print('x的列名',x.columns)
print('查看系数',clf_reg.coef_)

print('查看线性回归方程截距项',clf_reg.intercept_)
pd.DataFrame(x.columns,clf_reg.coef_)
# 将特征列和系数都存为dataframe表结构
pd1=pd.concat([pd.DataFrame(housevalue.feature_names),pd.DataFrame(clf_reg.coef_)],axis=1)
# 连接两张表
pd1.columns=list('01')
# 先分配列名,避免后面重命名出现重复
pd2= pd1.rename(columns={'0':'feature_name','1':'回归系数'})
# 给表头重命名
print('方法一\n',pd2)

pd3 = np.c_[x.columns,clf_reg.coef_]
print('方法二\n',pd3)

pd4 = list(zip(x.columns,clf_reg.coef_))
print('方法三\n',pd4)

结果截图:

 2)利用metrics模块计算绝对均值误差MAE(mean_absolute_error)。

代码及结果截图:

from sklearn import metrics
mae = metrics.mean_absolute_error(Ytest,Ypred)
print("利用metrocs计算MAE\n",mae)

结果截图:

 注:计算R²时,可以用sklearn.metrics.r2_score()或.score()实现

sklearn.metrics.r2_score():输入内容为真实标签、预测标签,基于输入的这两个数组一个为真实值,即真实的测试集,一个为预测值。计算原理为,将真实的测试值标签与由predict()函数计算得到的Xtest的预测结果比较,根据公式

扫描二维码关注公众号,回复: 15388793 查看本文章

计算相关系数,从而得出两者的差异。

.score():输入内容为测试集X,测试集Y标签,用LinearRegression()模型调用该方法后先再根据方法的评分原则计算Xtest和Ytest的拟合程度。

猜你喜欢

转载自blog.csdn.net/m0_52051577/article/details/130124026
今日推荐