預測python訓練好的模型,如何用訓練好的模型預測

本文目錄一覽:

如何用Python在10分鐘內建立一個預測模型

預測模型的分解過程

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

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

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

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

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

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

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

數據建模——4%的時間

性能預測——6%的時間

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

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

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

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

我的第一個模型執行的操作:

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

確定分類和數值特徵

識別缺失值所在列

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

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

為缺失值創建假標誌:有用,有時缺失值本身就攜帶了大量的信息。

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

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

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

階段3:數據建模

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

階段4:性能預測

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

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

讓我們開始付諸行動

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

步驟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’)

#創建訓練、測試數據集標誌

train=’Train’

test=’Test’

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

步驟2:該框架的第二步並不需要用到python,繼續下一步。

步驟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:識別缺失值變量並創建標誌

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

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

#為有缺失值的變量創建一個新的變量

# 對缺失值標誌為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:創建分類變量的標籤編碼器,將數據集分割成訓練和測試集,進一步,將訓練數據集分割成訓練集和測試集。

#創建分類特徵的標籤編碼器

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=)

現在可以提交了!

我用Python進行隨機森林回歸,訓練好模型後用來預測,預測值卻為一個定值,請問這是什麼原因導致的?

隨機森林是以決策樹為基礎的一種更高級的算法。隨機森林可用於回歸也可以用於分類。它的工作原理是生成多個分類器/模型,各自獨立地學習和作出預測。最後對這些預測進行集成,因此優於任何一個單分類的做出預測,是一種優秀的機器學習模型。

之所以你沒能學習到有效的模型,可能是你的數據中的因子與預測指標的關聯強度不夠,因此學習到的是常數模型,也有可能是數據的處理流程或者模型的使用方法不對。網頁鏈接這個網址上的課程完整講解了隨機森林算法的使用,希望對你有幫助

python如何繪製預測模型校準圖

python繪製預測模型校準圖可以使用校準曲線,因為預測一個模型校準的最簡單的方法是通過一個稱為「校準曲線」的圖(也稱為「可靠性圖」,reliability diagram)。

這個方法主要是將觀察到的結果通過概率劃分為幾類(bin)。因此,屬於同一類的觀測值具有相近的概率。

對於每個類,校準曲線將預測這個類的平均值,然後將預測概率的平均值與理論平均值(即觀察到的目標變量的平均值)進行比較。

你只需要確定類的數量和以下兩者之間的分類策略即可:

1、「uniform」,一個0-1的間隔被分為n_bins個類,它們都具有相同的寬度。

2、「quantile」,類的邊緣被定義,從而使得每個類都具有相同數量的觀測值。

假設你的模型具有良好的精度,則校準曲線將單調增加。但這並不意味着模型已被正確校準。實際上,只有在校準曲線非常接近等分線時(即下圖中的灰色虛線),您的模型才能得到很好的校準,因為這將意味着預測概率基本上接近理論概率。

python繪製預測模型中如何解決校準錯誤:

假設你已經訓練了一個分類器,該分類器會產生準確但未經校準的概率。概率校準的思想是建立第二個模型(稱為校準器),校準器模型能夠將你訓練的分類器「校準」為實際概率。

因此,校準包括了將一個一維矢量(未校準概率)轉換為另一個一維矢量(已校準概率)的功能。

兩種常被用作校準器的方法:

1、保序回歸:一種非參數算法,這種非參數算法將非遞減的自由格式行擬合到數據中。行不會減少這一事實是很重要的,因為它遵從原始排序。

2、邏輯回歸:現在有三種選擇來預測概率:普通隨機森林、隨機森林 + 保序回歸、隨機森林 + 邏輯回歸。

原創文章,作者:T92SS,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/128048.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
T92SS的頭像T92SS
上一篇 2024-10-03 23:24
下一篇 2024-10-03 23:24

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • TensorFlow Serving Java:實現開發全功能的模型服務

    TensorFlow Serving Java是作為TensorFlow Serving的Java API,可以輕鬆地將基於TensorFlow模型的服務集成到Java應用程序中。…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論