日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

用python做预测模型的好处_如何用Python在10分钟内建立一个预测模型

發(fā)布時間:2023/12/15 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用python做预测模型的好处_如何用Python在10分钟内建立一个预测模型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

匿名用戶

1級

2017-01-01 回答

預測模型的分解過程

我總是集中于投入有質量的時間在建模的初始階段,比如,假設生成、頭腦風暴、討論或理解可能的結果范圍。所有這些活動都有助于我解決問題,并最終讓我設計出更強大的商業(yè)解決方案。為什么你要在前面花費這段時間,這有充分的理由:

你有足夠的時間投入并且你是無經驗的(這是有影響的)

你不帶有其它數據觀點或想法的偏見(我總是建議,在深入研究數據之前做假設生成)

在后面的階段,你會急于完成該項目而沒有能力投入有質量的時間了。

這個階段需要投入高質量時間,因此我沒有提及時間表,不過我建議你把它作為標準的做法。這有助于你建立建立更好地預測模型,在后面的階段的只需較少的迭代工作。讓我們來看看建立第一個模型的剩余階段的時間表:

數據描述性分析——50%的時間

數據預處理(缺失值和異常值修復)——40%的時間

數據建?!?%的時間

性能預測——6%的時間

讓我們一步一步完成每個過程(每一步投入預測的時間):

階段1:描述性分析/數據探索

在我剛開始成為數據科學家的時候,數據探索占據了我大量的時間。不過,隨著時間的推移,我已經把大量的數據操作自動化了。由于數據準備占據建立第一個模型工作量的50%,自動化的好處是顯而易見的。

這是我們的第一個基準模型,我們去掉任何特征設計。因此,描述分析所需的時間僅限于了解缺失值和直接可見的大的特征。在我的方法體系中,你將需要2分鐘來完成這一步(假設,100000個觀測數據集)。

我的第一個模型執(zhí)行的操作:

確定ID,輸入特征和目標特征

確定分類和數值特征

識別缺失值所在列

階段2:數據預處理(缺失值處理)

有許多方法可以解決這個問題。對于我們的第一個模型,我們將專注于智能和快速技術來建立第一個有效模型。

為缺失值創(chuàng)建假標志:有用,有時缺失值本身就攜帶了大量的信息。

用均值、中位數或其它簡單方法填補缺失值:均值和中位數填補都表現(xiàn)良好,大多數人喜歡用均值填補但是在有偏分布的情況下我建議使用中位數。其它智能的方法與均值和中位數填補類似,使用其它相關特征填補或建立模型。比如,在Titanic生存挑戰(zhàn)中,你可以使用乘客名字的稱呼,比如:“Mr.”, “Miss.”,”Mrs.”,”Master”,來填補年齡的缺失值,這對模型性能有很好的影響。

填補缺失的分類變量:創(chuàng)建一個新的等級來填補分類變量,讓所有的缺失值編碼為一個單一值比如,“New_Cat”,或者,你可以看看頻率組合,使用高頻率的分類變量來填補缺失值。

由于數據處理方法如此簡單,你可以只需要3到4分鐘來處理數據。

階段3:數據建模

根據不同的業(yè)務問題,我推薦使用GBM或RandomForest技術的任意一種。這兩個技術可以極其有效地創(chuàng)建基準解決方案。我已經看到數據科學家通常把這兩個方法作為他們的第一個模型同時也作為最后一個模型。這最多用去4到5分鐘。

階段4:性能預測

有各種各樣的方法可以驗證你的模型性能,我建議你將訓練數據集劃分為訓練集和驗證集(理想的比例是70:30)并且在70%的訓練數據集上建模?,F(xiàn)在,使用30%的驗證數據集進行交叉驗證并使用評價指標進行性能評估。最后需要1到2分鐘執(zhí)行和記錄結果。

本文的目的不是贏得比賽,而是建立我們自己的基準。讓我們用python代碼來執(zhí)行上面的步驟,建立你的第一個有較高影響的模型。

讓我們開始付諸行動

首先我假設你已經做了所有的假設生成并且你擅長使用python的基本數據科學操作。我用一個數據科學挑戰(zhàn)的例子來說明。讓我們看一下結構:

步驟1:導入所需的庫,讀取測試和訓練數據集。

#導入pandas、numpy包,導入LabelEncoder、random、RandomForestClassifier、GradientBoostingClassifier函數

import pandas as pd

import numpy as np

fromsklearn.preprocessing import LabelEncoder

import random

fromsklearn.ensemble import RandomForestClassifier

from sklearn.ensembleimport GradientBoostingClassifier

#讀取訓練、測試數據集

train=pd.read_csv('C:/Users/AnalyticsVidhya/Desktop/challenge/Train.csv')

test=pd.read_csv('C:/Users/AnalyticsVidhya/Desktop/challenge/Test.csv')

#創(chuàng)建訓練、測試數據集標志

train='Train'

test='Test'

fullData =pd.concat(,axis=0) #聯(lián)合訓練、測試數據集

步驟2:該框架的第二步并不需要用到python,繼續(xù)下一步。

步驟3:查看數據集的列名或概要

fullData.columns # 顯示所有的列名稱

fullData.head(10) #顯示數據框的前10條記錄

fullData.describe() #你可以使用describe()函數查看數值域的概要

步驟4:確定a)ID變量 b)目標變量 c)分類變量 d)數值變量 e)其他變量。

ID_col =

target_col =

cat_cols =

num_cols= list(set(list(fullData.columns))-set(cat_cols)-set(ID_col)-set(target_col)-set(data_col))

other_col= #為訓練、測試數據集設置標識符

步驟5:識別缺失值變量并創(chuàng)建標志

fullData.isnull().any()#返回True或False,True意味著有缺失值而False相反

num_cat_cols = num_cols+cat_cols # 組合數值變量和分類變量

#為有缺失值的變量創(chuàng)建一個新的變量

# 對缺失值標志為1,否則為0

for var in num_cat_cols:

if fullData.isnull().any()=True:

fullData=fullData.isnull()*1

步驟6:填補缺失值

#用均值填補數值缺失值

fullData = fullData.fillna(fullData.mean(),inplace=True)

#用-9999填補分類變量缺失值

fullData = fullData.fillna(value = -9999)

步驟7:創(chuàng)建分類變量的標簽編碼器,將數據集分割成訓練和測試集,進一步,將訓練數據集分割成訓練集和測試集。

#創(chuàng)建分類特征的標簽編碼器

for var in cat_cols:

number = LabelEncoder()

fullData = number.fit_transform(fullData.astype('str'))

#目標變量也是分類變量,所以也用標簽編碼器轉換

fullData = number.fit_transform(fullData.astype('str'))

train=fullData='Train']

test=fullData='Test']

train = np.random.uniform(0, 1, len(train)) <= .75

Train, Validate = train=True], train=False]

步驟8:將填補和虛假(缺失值標志)變量傳遞到模型中,我使用隨機森林來預測類。

features=list(set(list(fullData.columns))-set(ID_col)-set(target_col)-set(other_col))

x_train = Train.values

y_train = Train.values

x_validate = Validate.values

y_validate = Validate.values

x_test=test.values

random.seed(100)

rf = RandomForestClassifier(n_estimators=1000)

rf.fit(x_train, y_train)

步驟9:檢查性能做出預測

status = rf.predict_proba(x_validate)

fpr, tpr, _ = roc_curve(y_validate, status)

roc_auc = auc(fpr, tpr)

print roc_auc

final_status = rf.predict_proba(x_test)

test=final_status

test.to_csv('C:/Users/Analytics Vidhya/Desktop/model_output.csv',columns=)

現(xiàn)在可以提交了!

總結

以上是生活随笔為你收集整理的用python做预测模型的好处_如何用Python在10分钟内建立一个预测模型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。