kaggle房價預測
本文數據來源kaggle的House Prices: Advanced Regression Techniques大賽。
#導入數據import pandas as pdpd.set_option(display.max_columns, None)import sklearnfrom sklearn.svm import SVRimport matplotlib.pyplot as plt% matplotlib inlinetrain = pd.read_csv(C:/wq/項目/房價預測/train.csv,engine = python)test = pd.read_csv(C:/wq/項目/房價預測/test.csv,engine = python)test.head()
協方差矩陣相關性分析
corrDf=train.corr()corrDf[SalePrice].sort_values(ascending =False)
我們取大於0.3的特徵變數
#取特徵值ssa=[OverallQual,GrLivArea,GarageCars,GarageArea,TotalBsmtSF,1stFlrSF,FullBath,TotRmsAbvGrd,YearBuilt,YearRemodAdd,GarageYrBlt,MasVnrArea,Fireplaces,BsmtFinSF1,LotFrontage,WoodDeckSF,2ndFlrSF,OpenPorchSF,HalfBath,LotArea,BsmtFullBath,BsmtUnfSF]
剔除多餘特徵
train1=train[ssa]train1.info()test[ssa].info()test1=test[ssa]
缺失值處理
train1[LotFrontage]=train1[LotFrontage].fillna(train1[LotFrontage].mean())train1[GarageYrBlt]=train1[GarageYrBlt].fillna(train1[GarageYrBlt].mean())train1[MasVnrArea]=train1[MasVnrArea].fillna(train1[MasVnrArea].mean())def buquan(df): for aa in ssa: df[aa]=df[aa].fillna(df[aa].mean()) return dfbuquan(test1)
進行建模,這次我們用的是支持向量回歸
model = SVR()
提取特徵
#原始數據集:特徵train_X = train1.loc[:,:]#原始數據集:標籤train_y = train[SalePrice]test_X = test1.loc[:,:]
訓練模型
model.fit( train_X , train_y )
我們先對訓練集做個預測
pred_Y = model.predict(train_X)pred_Y
結果值都一樣了,這是什麼情況,我們此時需要對數據進行分析,然後調整
我們觀察房價的分布,用散點圖來看
plt.scatter(range(0,1460),train[SalePrice])
發現可能因為房價過於集中,或者有些房價離散程度太高,然後產生了預測值為一個值的情況
那麼我們可以對價格取對數進行處理,我們從log函數的性質可以看到,自變數x的值越小,函數值y的變化越快,所以與這個圖結合起來,應該能夠放大接近的價格的距離,又縮小太高的價格的距離而具有線性關係
import numpy as nptrain_y = np.log1p(train_y)
再次訓練模型
svr_model = SVR()svr_model.fit(train_X, train_y)
對訓練集做預測看還是不是一個值
Y=svr_model.predict(train_X)np.expm1(Y)#取對數後進行恢復
這樣就沒有問題了,我們再預測測試集
Y1=svr_model.predict(test1)result=np.expm1(Y1)result.to_csv("C:/Users/Administrator/Desktop/logistic_regression_predictions.csv", index=False)
這樣大致完成,後續再進行深化與調整吧
推薦閱讀:
※Kaggle 入門 1.1——A Journey through Titanic
※Titanic: kaggle入門實踐-top10%(附Python代碼)
※遺憾未進前10%, Kaggle&Quora競賽賽後總結
※Kaggle入門系列:(二)Kaggle簡介
※Zillow簡介(二)如何重構經紀行業的產業鏈?
TAG:Kaggle |