当前位置:   article > 正文

【机器学习】波士顿房价数据集 Python完整代码

房价数据集
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import pandas as pd
  4. import seaborn as sns #数据可视化库
  5. from sklearn.datasets import load_boston #导入函数,加载数据集
  6. from sklearn.model_selection import train_test_split#导入函数,划分数据集
  7. from sklearn.linear_model import LinearRegression #导入类,创建线性回归模型
  8. from sklearn import metrics #导入模块,模型评估和性能度量
  9. from sklearn import preprocessing #导入模块,用与数据预处理和特征缩放
  1. data = load_boston()#导入数据集
  2. data_pd = pd.DataFrame(data.data,columns=data.feature_names)#将numpy数组转化为pandas数据框
  3. #将 data.target 添加为一个名为 "price" 的新列,并将其存储在数据框 data_pd 中
  4. data_pd['price'] = data.target
  1. # 查看数据类型
  2. data_pd.dtypes.value_counts()#计算每种数据类型的列数
  3. #输出:
  4. #1. 数据框中有14列数据类型为“float 64”
  5. #2. 数据框中有一列数据类型为“int 64”
  1. # 查看空值
  2. data_pd.isnull().sum()
  3. #'''
  4. #1. isnull()函数,检查是否有缺失值,返回布尔类型(有缺失值返回“Ture”)
  5. #2. sum()函数,计算缺失值数量(计算布尔类型量)
  6. #'''
  7. data_pd.shape #以元组类型返回数据框行数和列数
  8. # 查看数据描述
  9. data_pd.describe()
  10. # 显示数据前5行
  11. data_pd.head()
  12. data_pd.corr()['price'] #计算“price”列与其他列之间的相关系数
  13. corr = data_pd.corr() #计算各列之间的相关系数
  14. corr = corr['price']
  15. corr[abs(corr)>0.5].sort_values().plot.bar()
  1. # 制作训练集和测试集的数据
  2. data_pd = data_pd[['LSTAT','PTRATIO','RM','price']] #重新排列数据框
  3. y = np.array(data_pd['price']) #将price转化为numpy数组,作为因变量(避免过拟合)
  4. data_pd=data_pd.drop(['price'],axis=1) #删除price列,更新data_pd
  5. X = np.array(data_pd) #转化为数组,一行对应一个数组,作为特征
  6. # 分割训练集和测试集
  7. train_X,test_X,train_Y,test_Y = train_test_split(X,y,test_size=0.2)
  8. # 加载模型
  9. linreg = LinearRegression()
  10. # 拟合数据
  11. linreg.fit(train_X,train_Y)
  12. # 进行预测
  13. y_predict = linreg.predict(test_X) #预测
  14. # 计算均方差
  15. metrics.mean_squared_error(y_predict,test_Y)#计算均方误差
  16. # 导包
  17. from sklearn.linear_model import Lasso,LassoCV,LassoLarsCV
  18. from sklearn.metrics import r2_score #计算决定系数,反映拟合能力
  19. # 重新加载数据
  20. data = load_boston()
  21. X = pd.DataFrame(data.data,columns=data.feature_names)
  22. y = np.array(data.target)
  23. # 分割训练集和测试集
  24. X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=14)#设置随机种子,保证每次数据集划分相同
  25. # 找到Lasso的alapha值
  26. model = LassoCV(cv=20).fit(X, y)
  27. # 进行Lasso回归
  28. lasso = Lasso(max_iter=10000, alpha=model.alpha_)
  29. y_pred_lasso = lasso.fit(X_train, y_train).predict(X_test)
  30. # 输出Lasso系数
  31. lasso.coef_
  32. # 制作训练集和测试集的数据
  33. data = load_boston()#导入数据集
  34. data_pd = pd.DataFrame(data.data,columns=data.feature_names)#将numpy数组转化为pandas数据框
  35. data_pd['price'] = data.target
  36. data_pd = data_pd[['LSTAT','PTRATIO','RM','DIS','price']]
  37. y = np.array(data_pd['price'])
  38. data_pd=data_pd.drop(['price'],axis=1)
  39. X = np.array(data_pd)
  40. train_X,test_X,train_Y,test_Y = train_test_split(X,y,test_size=0.2)
  41. # 训练模型,并重新计算均方差
  42. linreg = LinearRegression()
  43. linreg.fit(train_X,train_Y)
  44. y_predict = linreg.predict(test_X)
  45. metrics.mean_squared_error(y_predict,test_Y)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/131498
推荐阅读
相关标签
  

闽ICP备14008679号