中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Python中怎么預測缺失值

這篇文章給大家介紹Python中怎么預測缺失值,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

成都創(chuàng)新互聯(lián)長期為超過千家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為修文企業(yè)提供專業(yè)的網(wǎng)站建設、成都網(wǎng)站設計修文網(wǎng)站改版等技術(shù)服務。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

import pandas as pd
df = pd.read_csv("winemag-data-130k-v2.csv")

接下來,讓我們輸出前五行數(shù)據(jù):

print(df.head())

Python中怎么預測缺失值

Python中怎么預測缺失值

讓我們從這些數(shù)據(jù)中隨機抽取500條記錄。這將有助于加快模型訓練和測試,盡管讀者可以很容易地對其進行修改:

import pandas as pd
df = pd.read_csv("winemag-data-130k-v2.csv").sample(n=500https://my.oschina.net/u/4253699/blog/, random_state = 42)

現(xiàn)在,讓我們打印與數(shù)據(jù)對應的信息,這將使我們了解哪些列缺少值:

print(df.info())

Python中怎么預測缺失值

有幾個列的非空值小于500,這與缺少的值相對應。首先,讓我們考慮建立一個模型,用“points”來估算缺失的“price”值。首先,讓我們打印“price”和“points”之間的相關(guān)性:

print("Correlation: "https://my.oschina.net/u/4253699/blog/, df['points'].corr(df['price']))

Python中怎么預測缺失值

我們看到了一個微弱的正相關(guān)。讓我們建立一個線性回歸模型,用“points”來預測“price”。首先,讓我們從“scikit learn”導入“LinearRegresssion”模塊:

from sklearn.linear_model import LinearRegression

現(xiàn)在,讓我們?yōu)橛柧毢蜏y試拆分數(shù)據(jù)。我們希望能夠預測缺失值,但我們應該使用真實值“price”來驗證我們的預測。讓我們通過只選擇正價格值來篩選缺少的值:

import numpy as np 
df_filter = df[df['price'] > 0].copy()

我們還可以初始化用于存儲預測和實際值的列表:

y_pred = []
y_true = []

我們將使用K-fold交叉驗證來驗證我們的模型。讓我們從“scikit learn”導入“KFolds”模塊。我們將使用10折來驗證我們的模型:

from sklearn.model_selection import KFold
kf = KFold(n_splits=10https://my.oschina.net/u/4253699/blog/, random_state = 42)
for train_indexhttps://my.oschina.net/u/4253699/blog/, test_index in kf.split(df_filter):
    df_test = df_filter.iloc[test_index]
    df_train = df_filter.iloc[train_index]

我們現(xiàn)在可以定義我們的輸入和輸出:

for train_indexhttps://my.oschina.net/u/4253699/blog/, test_index in kf.split(df_filter):
    ...
    X_train = np.array(df_train['points']).reshape(-1https://my.oschina.net/u/4253699/blog/, 1)     
    y_train = np.array(df_train['price']).reshape(-1https://my.oschina.net/u/4253699/blog/, 1)
    X_test = np.array(df_test['points']).reshape(-1https://my.oschina.net/u/4253699/blog/, 1)  
    y_test = np.array(df_test['price']).reshape(-1https://my.oschina.net/u/4253699/blog/, 1)

并擬合我們的線性回歸模型:

for train_indexhttps://my.oschina.net/u/4253699/blog/, test_index in kf.split(df_filter):
    ...
    model = LinearRegression()
    model.fit(X_trainhttps://my.oschina.net/u/4253699/blog/, y_train)

現(xiàn)在讓我們生成并存儲我們的預測:

for train_indexhttps://my.oschina.net/u/4253699/blog/, test_index in kf.split(df_filter):
    ...
    y_pred.append(model.predict(X_test)[0])
    y_true.append(y_test[0])

現(xiàn)在讓我們評估一下模型的性能。讓我們用均方誤差來評估模型的性能:

print("Mean Square Error: "https://my.oschina.net/u/4253699/blog/, mean_squared_error(y_truehttps://my.oschina.net/u/4253699/blog/, y_pred))

Python中怎么預測缺失值

并不太好。我們可以通過訓練平均價格加上一個標準差來改善這一點:

df_filter = df[df['price'] <= df['price'].mean() + df['price'].std() ].copy()
...
print("Mean Square Error: "https://my.oschina.net/u/4253699/blog/, mean_squared_error(y_truehttps://my.oschina.net/u/4253699/blog/, y_pred))

Python中怎么預測缺失值

雖然這大大提高了性能,但其代價是無法準確估算葡萄酒的price。與使用單一特征的回歸模型預測價格不同,我們可以使用樹基模型,例如隨機森林模型,它可以處理類別和數(shù)值變量。

讓我們建立一個隨機森林回歸模型,使用“country”、“province”、“variety”、“winery”和“points”來預測葡萄酒的“price”。首先,讓我們將分類變量轉(zhuǎn)換為可由隨機森林模型處理的分類代碼:

df['country_cat'] = df['country'].astype('category')
df['country_cat'] = df['country_cat'].cat.codes

df['province_cat'] = df['province'].astype('category')
df['province_cat'] = df['province_cat'].cat.codes

df['winery_cat'] = df['winery'].astype('category')
df['winery_cat'] = df['winery_cat'].cat.codes

df['variety_cat'] = df['variety'].astype('category')
df['variety_cat'] = df['variety_cat'].cat.codes

讓我們將隨機樣本大小增加到5000:

df = pd.read_csv("winemag-data-130k-v2.csv").sample(n=5000https://my.oschina.net/u/4253699/blog/, random_state = 42)

接下來,讓我們從scikit learn導入隨機森林回歸器模塊。我們還可以定義用于訓練模型的特征列表:

from sklearn.ensemble import RandomForestRegressor
features = ['points'https://my.oschina.net/u/4253699/blog/, 'country_cat'https://my.oschina.net/u/4253699/blog/, 'province_cat'https://my.oschina.net/u/4253699/blog/, 'winery_cat'https://my.oschina.net/u/4253699/blog/, 'variety_cat']

讓我們用一個隨機森林來訓練我們的模型,它有1000個估計量,最大深度為1000。然后,讓我們生成預測并將其附加到新列表中:

for train_indexhttps://my.oschina.net/u/4253699/blog/, test_index in kf.split(df_filter):
    df_test = df_filter.iloc[test_index]
    df_train = df_filter.iloc[train_index]
    
    X_train = np.array(df_train[features])
    y_train = np.array(df_train['price'])
    X_test = np.array(df_test[features])
    y_test = np.array(df_test['price'])
    model = RandomForestRegressor(n_estimators = 1000https://my.oschina.net/u/4253699/blog/, max_depth = 1000https://my.oschina.net/u/4253699/blog/, random_state = 42)
    model.fit(X_trainhttps://my.oschina.net/u/4253699/blog/, y_train)
    
    y_pred_rf.append(model.predict(X_test)[0])
    y_true_rf.append(y_test[0])

最后,讓我們評估隨機森林和線性回歸模型的均方誤差:

print("Mean Square Error (Linear Regression): "https://my.oschina.net/u/4253699/blog/, mean_squared_error(y_truehttps://my.oschina.net/u/4253699/blog/, y_pred))
print("Mean Square Error (Random Forest): "https://my.oschina.net/u/4253699/blog/, mean_squared_error(y_pred_rfhttps://my.oschina.net/u/4253699/blog/, y_true_rf))

Python中怎么預測缺失值

我們看到隨機森林模型具有優(yōu)越的性能?,F(xiàn)在,讓我們使用我們的模型預測缺失的價格值,并顯示price預測:

df_missing = df[df['price'].isnull()].copy()

X_test_lr = np.array(df_missing['points']).reshape(-1https://my.oschina.net/u/4253699/blog/, 1)
X_test_rf = np.array(df_missing[features])

X_train_lr = np.array(df_filter['points']).reshape(-1https://my.oschina.net/u/4253699/blog/, 1)    
y_train_lr = np.array(df_filter['price']).reshape(-1https://my.oschina.net/u/4253699/blog/, 1)

X_train_rf = np.array(df_filter[features])
y_train_rf = np.array(df_filter['price'])

model_lr = LinearRegression()
model_lr.fit(X_train_lrhttps://my.oschina.net/u/4253699/blog/, y_train_lr)
print("Linear regression predictions: "https://my.oschina.net/u/4253699/blog/, model_lr.predict(X_test_lr)[0][0])

model_rf = RandomForestRegressor(n_estimators = 1000https://my.oschina.net/u/4253699/blog/, max_depth = 1000https://my.oschina.net/u/4253699/blog/, random_state = 42)
model_rf.fit(X_train_rfhttps://my.oschina.net/u/4253699/blog/, y_train_rf)
print("Random forests regression predictions: "https://my.oschina.net/u/4253699/blog/, model_rf.predict(X_test_rf)[0])

Python中怎么預測缺失值

我就到此為止,但我鼓勵你嘗試一下特征選擇和超參數(shù)調(diào)整,看看是否可以提高性能。此外,我鼓勵你擴展此數(shù)據(jù)進行插補模型,以填補“region_1”和“designation”等分類字段中的缺失值。在這里,你可以構(gòu)建一個基于樹的分類模型,根據(jù)分類和數(shù)值特征來預測所列類別的缺失值。

關(guān)于Python中怎么預測缺失值就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

當前名稱:Python中怎么預測缺失值
網(wǎng)址分享:http://www.rwnh.cn/article13/jihdgs.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、網(wǎng)站制作、小程序開發(fā)、網(wǎng)站建設、App設計、電子商務

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
陆良县| 台东县| 达尔| 古浪县| 贺兰县| 昌平区| 浦城县| 铁岭县| 开原市| 陈巴尔虎旗| 汶川县| 海口市| 盐城市| 安义县| 大英县| 湘西| 白玉县| 斗六市| 前郭尔| 珠海市| 普定县| 新营市| 东兴市| 育儿| 炉霍县| 临汾市| 深圳市| 贵溪市| 西青区| 湟中县| 称多县| 白朗县| 平乐县| 汉阴县| 江安县| 隆化县| 泊头市| 宜兴市| 高要市| 峨眉山市| 汝城县|