kaggle的機器學習教程中,概括了建模的幾個常識或者必要流程:
1.清洗好資料,得到x和y。
2.選擇合適的模型,面對未知的資料和業務需求可以先嘗試不同的模型。
3.將樣本資料分為訓練資料和檢驗資料兩類,訓練資料帶入模型,引數可先從簡,檢驗資料進行模型檢驗。
4.模型引數優化,以防欠擬合和過擬合。
以下為對應** :
清洗好資料,得到x和y。
import pandas as pd
main_file_path = '../input/train.csv' # this is the path to the iowa
data that you will use
data = pd.read_csv(main_file_path)
#target y and input x
y = data.saleprice
predictors = ['lotarea','yearbuilt','1stflrsf','2ndflrsf','fullbath','bedroomabvgr',
'totrmsabvgrd']
x = data[predictors]
用決策樹模型,將樣本資料分為訓練資料和檢驗資料兩類,訓練資料帶入模型,引數可先從簡,檢驗資料進行模型檢驗(mae,平均絕對偏差)。
from sklearn.tree import decisiontreeregressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error
train_x, val_x, train_y, val_y = train_test_split(x, y,random_state = 0)
lowa_model = decisiontreeregressor()
lowa_model.fit(train_x,train_y)
val_prices = lowa_model.predict(val_x)
mean_absolute_error(val_y, val_prices)
3.模型引數優化
def
get_mae
(max_leaf_nodes, predictors_train, predictors_val, targ_train, targ_val):
model = decisiontreeregressor(max_leaf_nodes=max_leaf_nodes, random_state=0)
model.fit(predictors_train, targ_train)
preds_val = model.predict(predictors_val)
mae = mean_absolute_error(targ_val, preds_val)
return(mae)
#求得最佳引數
import numpy as np
case =
for max_leaf_nodes in range(5,500):
my_mae = get_mae(max_leaf_nodes, train_x, val_x, train_y, val_y)
# print("max leaf nodes: %d \t\t mean absolute error: %d" %(max_leaf_nodes, my_mae))
case = np.array(case)
print (np.min(case))
ii = np.where(case==np.min(case))
print ("the best leaf nodes is ", ii[0][0]+5)
Kaggle 機器學習 例項3 house
import numpy as np import pandas as pd import matplotlib.pyplot as plt pd.set option display.max columns none pd.set option display.max rows none plt....
初識機器學習(一) Kaggle下的測試學習
新手上路,自然是橫衝直撞。雖然英語不咋樣,還是選擇在kaggle上面跟隨學習。在對python有一些基礎的了解後,便開始直接從比賽中磨練自己。點開kaggle裡learn提供的一些教程,跟隨教程邁出第一步。教程中提供了乙個關於墨爾本房價 的事例來輔助學習。假設你家裡要買房,目前某地正在建一些房子,手...
斯坦福機器學習3之Logistic建模
一 模型引入 對於分類問題,最終 值是離散的,線性回歸不能很好地對這類問題進行建模。logistic模型是對於y 分類問題的可靠模型,其可靠性在glm理論中得到驗證和說明。二 模型說明 1 該模型不是直接對變數x對應的類別號進行 而是對其屬於類別1的概率進行 顯然,如果這個概率大於0.5,我們則可以...