1. 程式人生 > >Kaggle比賽之『舊金山犯罪分類預測』 demo

Kaggle比賽之『舊金山犯罪分類預測』 demo

日期格式 建模 舊金山 mon feature sklearn nor model sin

import pandas as pd
import numpy as np

#用pandas載入csv訓練數據,並解析第一列為日期格式
train=pd.read_csv(../input/train.csv, parse_dates = [Dates])
test=pd.read_csv(../input/test.csv, parse_dates = [Dates])
train

import pandas as pd
import numpy as np
from sklearn.cross_validation import train_test_split
from sklearn import
preprocessing #用LabelEncoder對不同的犯罪類型編號 leCrime = preprocessing.LabelEncoder() crime = leCrime.fit_transform(train.Category) #因子化星期幾,街區,小時等特征 days = pd.get_dummies(train.DayOfWeek) district = pd.get_dummies(train.PdDistrict) hour = train.Dates.dt.hour hour = pd.get_dummies(hour) #組合特征 trainData = pd.concat([hour, days, district], axis=1) trainData[
crime]=crime #對於測試數據做同樣的處理 days = pd.get_dummies(test.DayOfWeek) district = pd.get_dummies(test.PdDistrict) hour = test.Dates.dt.hour hour = pd.get_dummies(hour) testData = pd.concat([hour, days, district], axis=1) trainData from sklearn.cross_validation import train_test_split from sklearn import
preprocessing from sklearn.metrics import log_loss from sklearn.naive_bayes import BernoulliNB from sklearn.linear_model import LogisticRegression import time # 只取星期幾和街區作為分類器輸入特征 features = [Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday, BAYVIEW, CENTRAL, INGLESIDE, MISSION, NORTHERN, PARK, RICHMOND, SOUTHERN, TARAVAL, TENDERLOIN] # 分割訓練集(3/5)和測試集(2/5) training, validation = train_test_split(trainData, train_size=.60) # 樸素貝葉斯建模,計算log_loss model = BernoulliNB() nbStart = time.time() model.fit(training[features], training[crime]) nbCostTime = time.time() - nbStart predicted = np.array(model.predict_proba(validation[features])) print("樸素貝葉斯建模耗時 %f 秒" %(nbCostTime)) print("樸素貝葉斯log損失為 %f" %(log_loss(validation[crime], predicted))) #邏輯回歸建模,計算log_loss model = LogisticRegression(C=.01) lrStart= time.time() model.fit(training[features], training[crime]) lrCostTime = time.time() - lrStart predicted = np.array(model.predict_proba(validation[features])) log_loss(validation[crime], predicted) print("邏輯回歸建模耗時 %f 秒" %(lrCostTime)) print("邏輯回歸log損失為 %f" %(log_loss(validation[crime], predicted)))

Kaggle比賽之『舊金山犯罪分類預測』 demo