国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 利用機器學習預測房價

利用機器學習預測房價

2021-10-10 22:21十千 Python

這篇文章主要介紹了利用機器學習回歸模型預測房價,解釋清晰,代碼詳細,是很不錯的機器學習實戰演練,對機器學習感興趣的朋友可以參考一下

項目介紹

背景:

DC競賽比賽項目,運用回歸模型進行房價預測。

數據介紹:

數據主要包括2014年5月至2015年5月美國King County的房屋銷售價格以及房屋的基本信息。

其中訓練數據主要包括10000條記錄,14個字段,分別代表:

  • 銷售日期(date):2014年5月到2015年5月房屋出售時的日期;
  • 銷售價格(price):房屋交易價格,單位為美元,是目標預測值;
  • 臥室數(bedroom_num):房屋中的臥室數目;
  • 浴室數(bathroom_num):房屋中的浴室數目;
  • 房屋面積(house_area):房屋里的生活面積;
  • 停車面積(park_space):停車坪的面積;
  • 樓層數(floor_num):房屋的樓層數;
  • 房屋評分(house_score):King County房屋評分系統對房屋的總體評分;
  • 建筑面積(covered_area):除了地下室之外的房屋建筑面積;
  • 地下室面積(basement_area):地下室的面積;
  • 建筑年份(yearbuilt):房屋建成的年份;
  • 修復年份(yearremodadd):房屋上次修復的年份;
  • 緯度(lat):房屋所在緯度;
  • 經度(long):房屋所在經度。

目標:

算法通過計算平均預測誤差來衡量回歸模型的優劣。平均預測誤差越小,說明回歸模型越好。

代碼詳解

數據導入

先導入分析需要的python包:

#導入類庫和加載數據集
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

導入下載好的kc_train的csv文件:

#讀取數據
train_names = ["date",
               "price",
               "bedroom_num",
               "bathroom_num",
               "house_area",
               "park_space",
               "floor_num",
               "house_score",
               "covered_area",
               "basement_area",
               "yearbuilt",
               "yearremodadd",
               "lat",
               "long"]
data = pd.read_csv("kc_train.csv",names=train_names)
data.head()

利用機器學習預測房價

數據預處理

查看數據集概況

# 觀察數據集概況
data.info()

利用機器學習預測房價

從圖中可以看出沒有任何缺失值,因此不需要對缺失值進行處理。

拆分數據

把原始數據中的年月日拆開,然后根據房屋的建造年份和修復年份計算一下售出時已經過了多少年,這樣就有17個特征。

sell_year,sell_month,sell_day=[],[],[]
house_old,fix_old=[],[]
for [date,yearbuilt,yearremodadd] in data[["date","yearbuilt","yearremodadd"]].values:
    year,month,day=date//10000,date%10000//100,date%100
    sell_year.append(year)
    sell_month.append(month)
    sell_day.append(day)
    house_old.append(year-yearbuilt)
    if yearremodadd==0:
        fix_old.append(0)
    else:
        fix_old.append(year-yearremodadd)
del data["date"]
data["sell_year"]=pd.DataFrame({"sell_year":sell_year})
data["sell_month"]=pd.DataFrame({"sell_month":sell_month})
data["sell_day"]=pd.DataFrame({"sell_day":sell_day})
data["house_old"]=pd.DataFrame({"house_old":house_old})
data["fix_old"]=pd.DataFrame({"fix_old":fix_old})
data.head()

利用機器學習預測房價

觀察因變量(price)數據情況

#觀察數據
print(data["price"].describe())

利用機器學習預測房價

#觀察price的數據分布
plt.figure(figsize = (10,5))
# plt.xlabel("price")
sns.distplot(data["price"])

利用機器學習預測房價

從數據和圖片上可以看出,price呈現典型的右偏分布,但總體上看還是符合一般規律。

相關性分析

自變量與因變量的相關性分析,繪制相關性矩陣熱力圖,比較各個變量之間的相關性:

#自變量與因變量的相關性分析
plt.figure(figsize = (20,10))
internal_chars = ["price","bedroom_num","bathroom_num","house_area","park_space","floor_num","house_score","covered_area"
                  ,"basement_area","yearbuilt","yearremodadd","lat","long","sell_year","sell_month","sell_day",
                 "house_old","fix_old"]
corrmat = data[internal_chars].corr()  # 計算相關系數
sns.heatmap(corrmat, square=False, linewidths=.5, annot=True) #熱力圖
csdn.net/jlf7026/article/details/84630414

利用機器學習預測房價

相關性越大,顏色越淺。看著可能不太清楚,因此看下排名

#打印出相關性的排名
print(corrmat["price"].sort_values(ascending=False))

利用機器學習預測房價

可以看出house_area,house_score,covered_area,bathroom_num這四個特征對price的影響最大,都超過了0.5。負數表明與price是負相關的。

特征選擇

一般來說,選擇一些與因變量(price)相關性比較大的做特征,但我嘗試過選擇前十的特征,然后進行建模預測,但得到的結果并不是很好,所以我還是把現有的特征全部用上。

歸一化

對于各個特征的數據范圍不一樣,影響線性回歸的效果,因此歸一化數據。

#特征縮放
data = data.astype("float")
x = data.drop("price",axis=1)
y = data["price"]
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
newX= scaler.fit_transform(x)
newX = pd.DataFrame(newX, columns=x.columns)
newX.head()

利用機器學習預測房價

劃分數據集

#先將數據集分成訓練集和測試集
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(newX, y, test_size=0.2, random_state=21)

建立模型

選擇兩個模型進行預測,觀察那個模型更好。

  • 線性回歸
  • 隨機森林
#模型建立
from sklearn import metrics
def RF(X_train, X_test, y_train, y_test):    #隨機森林 
    from sklearn.ensemble import RandomForestRegressor
    model= RandomForestRegressor(n_estimators=200,max_features=None)
    model.fit(X_train, y_train)
    predicted= model.predict(X_test)
    mse = metrics.mean_squared_error(y_test,predicted)
    return (mse/10000)
def LR(X_train, X_test, y_train, y_test):    #線性回歸
    from sklearn.linear_model import LinearRegression            
    LR = LinearRegression()
    LR.fit(X_train, y_train)
    predicted = LR.predict(X_test)
    mse = metrics.mean_squared_error(y_test,predicted)
    return (mse/10000)

評價標準

算法通過計算平均預測誤差來衡量回歸模型的優劣。平均預測誤差越小,說明回歸模型越好。

print("RF mse: ",RF(X_train, X_test, y_train, y_test))
print("LR mse: ",LR(X_train, X_test, y_train, y_test))

利用機器學習預測房價

可以看出,隨機森林算法比線性回歸算法要好很多。

總結

對機器學習有了初步了解。但對于數據的預處理,和參數,特征,模型的調優還很欠缺。

希望通過以后的學習,能不斷提高。也希望看這篇文章的朋友和我一起感受機器學習的魅力,更多相關機器學習內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章,希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/jlf7026/article/details/84630414

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜免费福利视频 | 久久久成人精品 | 亚洲成人久久久 | 香蕉久久av一区二区三区 | 久久久久久久国产精品免费播放 | 中文字幕av一区二区 | 嫩草影院地址 | 国产精品伦一区二区三级视频 | 色婷婷影院 | 一区二区三区在线免费视频 | 青青草91青娱盛宴国产 | 91麻豆产精品久久久 | www.国产一区 | 欧美自拍小视频 | 久久高清片 | 九九九久久久 | 国产高清在线精品一区二区三区 | 欧美三区| 日韩精品免费 | 日日夜夜视频 | 在线视频亚洲 | 国产综合精品 | 亚洲精品乱码久久久久久蜜桃麻豆 | 亚洲一区在线日韩在线深爱 | 91中文在线 | 五月天婷婷色综合 | 亚洲精品在线观看av | 一色屋精品久久久久久久久久 | 97视频精品 | 狠狠久| 国产精品视频一区二区三区不卡 | 毛片在线视频 | 久久久www成人免费精品 | 国产精品一区二区不卡 | 成人影院在线 | a级毛片免费高清视频 | 欧美在线观看禁18 | 国产精品久久久久久久久久东京 | 精品欧美日韩 | 久久久99久久 | 三区在线视频 |