python回归分析预测模型_Python与线性回归模型预测房价
目錄提出問題
理解數據
數據清洗
構建模型
模型評估
總結
1. 提出問題
房價和什么因素相關?進而得知如何挑選房子?
2. 理解數據
2.1 導入數據
從Kaggle 中下載
2.2 導入數據
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
導入訓練數據與測試數據批量進行數據清洗。
#訓練數據集
df_train= pd.read_csv('./train.csv')
#測試數據集
df_test= pd.read_csv('./test.csv')
print("訓練集數據:",df_train.shape,"測試訓練集:", df_test.shape)
訓練集數據: (1460, 81) 測試訓練集: (1459, 80)
#合并數據集,以便同步數據清洗
full = df_train.append(df_test,ignore_index=True)
print("合并后的數據集:",full.shape)
合并后的數據集: (2919, 81)
2.3 查看數據集信息
full.columns
full.head()
full.info()由于數據項太多,這里只展示節選數據
3. 數據清洗
3.1 處理缺失值
數據有明顯缺失值,其中數據項Alley, Fence, MiscFeature, PoolQC 等缺失率高達90%,直接刪除它們。
full.drop(['Alley','Fence','MiscFeature','PoolQC'],axis=1,inplace=True)
3.2 處理分類特征 —— One-hot encoding
為了提高數據分析的可信度,此處把所有的分類數據降維,批量進行獨熱編碼。
object_type=[]
for col in full.columns:
if full[col].dtype =="object":
object_type.append(col)
full_dummied_object = full
for ob in object_type:
objectDf=pd.DataFrame()
objectDf=pd.get_dummies(full_dummied_object[ob],prefix=ob)
full_dummied_object=pd.concat([full_dummied_object,objectDf],axis=1)
full_dummied_object.drop(ob,axis=1,inplace=True)
full_dummied_object.head()
3.3 數據相關性
數據太多,先找出和“標簽”關聯性最大的10個“特征”再進行下一步分析。
Correlation Martix (heatmap style)
通過熱力圖形象看出數據項之間的相關關系。
cor_mart=full_dummied_object.corr()
k=10
cols=cor_mart.nlargest(k,'SalePrice')['SalePrice'].index
cm=np.corrcoef(full_dummied_object[cols].values.T)
sns.set(font_scale=1.25)
hm=sns.heatmap(cm,cbar=True, annot=True, square=True,fmt='.2f',annot_kws={'size':10},yticklabels=cols.values, xticklabels=cols.values)
plt.show()
顯示前10個相關性最強的特征。
cor_mart['SalePrice'].sort_values(ascending =False)[0:11]
# 特征選擇
full_X = full_dummied_object[['OverallQual','GrLivArea','GarageCars','GarageArea',
'TotalBsmtSF','1stFlrSF','FullBath','BsmtQual_Ex','TotRmsAbvGrd','YearBuilt']]
full_X.head()
4.構建模型
4.1 建立訓練數據集和測試數據集
#原始數據集有1460行
sourceRow=1460
#原始數據集:特征
source_X = full_X.loc[0:sourceRow-1,:]
#原始數據集:標簽
source_y = full_dummied_object.loc[0:sourceRow-1,'SalePrice']
#預測數據集:特征
pred_X = full_X.loc[sourceRow:,:]
#原始數據集有多少行
print('原始數據集有多少行:',source_X.shape[0])
#預測數據集大小
print('原始數據集有多少行:',pred_X.shape[0])
原始數據集有多少行: 1460
原始數據集有多少行: 1459
from sklearn.model_selection import train_test_split
#建立模型用的訓練數據集和測試數據集
train_X, test_X, train_y, test_y = train_test_split(source_X, source_y, train_size=.8)
4.2 選擇機器學習方法 --線性回歸
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(train_X , train_y)
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)
model.score(test_X, test_y)
0.8269044883096861
5. 總結
經數據清洗后,建立的線性回歸模型準確率為82.7%。
總結
以上是生活随笔為你收集整理的python回归分析预测模型_Python与线性回归模型预测房价的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 系统运维手册_如何摆脱“背锅侠”,做一个
- 下一篇: python给太阳花添加茎叶_pytho