機械学習で、kaggle タイタニック問題に挑戦
index:
概要
初心者問題らしい kaggle Competition のタイタニック問題を実施してみました。
https://www.kaggle.com/c/titanic
今回は、ロジスティック回帰で進める事にしてみました。
環境
python 3.5
scikit-learn
numpy
matplotlib
学習データ
kaggle の上記ページから、
学習データ等を、コピーします。
train.csv
test.csv
目的変数:
Survived :生存したかどうか。
testデータは、Survivedが、含まれないので注意です。
説明変数:
年齢、性別など
結果
先に、今回の結果を添付しておきます。
正解率 約、77.03%
上記コンペのページの[ Submit predictions]
から、結果ファイルをアップすると、
結果が表示されました。低いですね、、
=>上位は、90%超えているようで、改善が必要なようです
処理
一部分ですが、
csvデータを読み込み、
前処理、欠損データの変換
数値以外データの変換処理など
学習
評価
=> テストデータは、目的変数(Survived) が無いので
正解率は出力できず、提出用CSVに、
予測値を出力しておきます
# 標準化対応、学習。 # 学習データ train_data = pd.read_csv("train.csv" ) test_data = pd.read_csv("test.csv" ) print( train_data.shape ) #print( train_data.head() ) # # 前処理 ,欠損データ 中央値で置き換える train2 = train_data[["PassengerId","Survived","Sex","Age" , "Embarked" ,"SibSp" ,"Parch" ]] test2 = test_data[ ["PassengerId","Sex","Age" , "Embarked" ,"SibSp" ,"Parch" ]] train_sub =get_subData(train2 ) test_sub =get_subData(test2 ) print(train_sub.info() ) print(test_sub.info() ) #quit() # ロジスティック回帰 from sklearn.linear_model import LogisticRegression # 説明変数と目的変数 X_train= train_sub[["Sex_flg","Age" , "Embark_flg" ,"SibSp" ,"Parch" ]] y_train= train_sub['Survived'] X_test = test_sub[["Sex_flg","Age" , "Embark_flg" ,"SibSp" ,"Parch" ]] # 学習データとテストデータに分ける print(X_train.shape, y_train.shape ) print(X_test.shape ) #quit() # ロジスティック回帰のインスタンス model = LogisticRegression() # fit clf = model.fit(X_train,y_train) print("train result:",clf.score(X_train,y_train)) #quit() # # 予測をしてCSVへ書き出す pred = model.predict(X_test) PassengerId = np.array( test_data["PassengerId"]).astype(int) df = pd.DataFrame(pred, PassengerId, columns=["Survived"]) df.head() # df.to_csv("out_res.csv", index_label=["PassengerId"])
関連のコード
まとめ
正解率を上げられるように、
改良点を検討したいと思います