予測問題、kaggle: New York City Taxi Trip Duration
index:
概要
kaggleチャレンジで、 New York City Taxi Trip Duration
予測問題
コンペ
https://www.kaggle.com/c/nyc-taxi-trip-duration
タクシーの、乗車時間を予測する。問題らしいですね
学習データ
kaggle の上記ページから、
学習データ等を、コピーします。
目的変数:
trip_duration(乗車した時間。秒数)
説明変数:
乗車した場所。緯度、経度、
乗車した日時 など
=> 説明変数は、さほど多くないようですが。
学習データの件数が多く、140万件以上
で、作業PCで 学習時でもメモリ不足
の可能性が。予測できたので、kernel で評価し、結果出力しました
前処理
・store_and_fwd_flag :カテゴリ変数の変換
・pickup_datetime : datetime型に変換。
・pickup_dt :pickup_datetimeの最小値からの差分、秒数
・lat_diff : 移動した latitude 距離
・lon_diff :移動した longitude 距離
=> 今回は、重回帰分析で、機械学習の処理しました。
# データ加工・処理・分析モジュール import numpy as np import numpy.random as random import scipy as sp from pandas import Series, DataFrame import pandas as pd # 可視化モジュール import matplotlib.pyplot as plt import matplotlib as mpl # 機械学習モジュール import sklearn from sklearn import linear_model import pickle import time # def correct_data(taxi_data): taxi_data.store_and_fwd_flag = taxi_data.store_and_fwd_flag.replace(['N', 'Y'], [0, 1]) return taxi_data # 学習データ global_start_time = time.time() train = pd.read_csv("../input/train.csv") # Reading data test = pd.read_csv("../input/test.csv") # Reading data # #train= train[: 10000] print(train.shape ,test.shape ) #quit() #test = pd.read_csv("../input/test.csv") # Reading data train = train[ train['trip_duration'] < 1000000] # convert train= correct_data(train) test = correct_data(test ) #for df in (train_data,test_data): #quit() for df in (train, test ): df['pickup_datetime'] = pd.to_datetime(df['pickup_datetime'], format='%Y-%m-%d %H:%M:%S') df['pickup_dt'] = (df['pickup_datetime'] - df['pickup_datetime'].min()).dt.total_seconds() df['lat_diff'] = df['pickup_latitude'] - df['dropoff_latitude'] df['lon_diff'] = df['pickup_longitude'] - df['dropoff_longitude'] col_name = ["vendor_id","passenger_count", "pickup_longitude", "pickup_latitude" , "dropoff_longitude", "dropoff_latitude","lat_diff","lon_diff" ,"pickup_dt" ] train_sub =train[col_name] test_sub =test[col_name] x_test =test_sub x_train =train_sub y_train =train['trip_duration'] print( x_train.shape, y_train.shape ) print( x_test.shape )
結果の提出
スコアは、0.86 ほど。
ランキング順位は表示されず。でした