Thursday, March 25, 2021

Colab(一二。一):Kaggle - Titanic

 Colab(一二。一):Kaggle - Titanic

2021/03/24

-----

說明:

花了一點時間跑一下鐵達尼號倖存者的實作 [1], [2]。[1] 主要會遇到的問題是 Python 舊版的 sorted 在新版時,會遇到 nan 跟 'C' 'Q'  'S' 分屬 float 與 str,因此無法排序。在 [2] 的解決之道是 nan 數量只有 2,直接改成 'S' 即可。

另外 Pandas 的 dataframe 與 Numpy 的 array,是兩個重要的非內建資料型態。

做 [1] 的時候,覺得這是一個很經典的問題,值得多花一點時間。還想要用深度學習做出很棒的結果。不過看了網上的資料,確實深度學習的強項是資料量更大的時候,鐵達尼的資料集說實在不大。

見識到一些前處理要注意的事項。前處理完成後,就是呼叫隨機森林的演算法。演算法當然值得深入研究,不過這就是實作之外的另一個問題了。Pandas 跟 Numpy 是更基本的。

-----


https://pixabay.com/zh/photos/giant-downfall-pleasure-boat-times-510674/

-----

◎ 以下以參考文獻 [1] 的 ipynb 檔作為「鐵達尼號倖存者」練習之用。程式塊的編號會放在問題編號之前。

-----

(in [2]:)問題一:df_train = pd.read_csv('../data/titanic/train.csv')

解答一:自行修改訓練集的路徑。參考 https://newtoypia.blogspot.com/2019/07/colab.html

-----

(in [13] :)問題二:print

解答二:print()

-----

(in [16] :)問題三:embarked_locs = sorted(df_train['Embarked'].unique())

解答三:

暫時使用手動排序。

解答說明:

首先看一下(in[2] :)與(out[4] :)。train 這個 csv 檔變成 df_train 這個 DataFrame 後,有 int64、float64、object 三種 dtypes(data types) [5]。而 object 在 pandas 裡面,代表 string,如果要在機器學習中使用,則要再轉成數值。

-----

(in [19] :)問題四:if len(df_train[df_train['Embarked'].isnull()] > 0):

解答四:if len(df_train[df_train['Embarked'].isnull()]) > 0:

-----

(in [19] :)問題五:nan。

解答五:np.nan。

https://stackoverflow.com/questions/38672695/nan-in-mapper-name-nan-is-not-defined

-----

(in [27] :)問題六:繪圖問題先跳過。

-----

(in [29] :)問題七:繪圖問題先跳過。

-----

(in [40] :)問題八:無法讀檔。

解答八:修改檔案路徑。

-----

(in [41] :)問題九:

(in [37] :)

一樣是問題三跟問題四的問題。

sort

compare

sort 的解法應該是把非 np.nan 的陣列排序,然後加到 np.nan 成為新的陣列,新的結果。

-----

from sklearn import metrics

#from sklearn.cross_validation import train_test_split

from sklearn.model_selection import train_test_split

-----


暫時的結果。

-----

References

[1] Kaggle機器學習競賽:預測泰坦尼克號倖存者

https://nbviewer.jupyter.org/github/donnemartin/data-science-ipython-notebooks/blob/master/kaggle/titanic.ipynb


[2] [資料分析&機器學習] 第4.1講 : Kaggle競賽-鐵達尼號生存預測 (前16%排名) | by Yeh James | JamesLearningNote | Medium

https://medium.com/jameslearningnote/%E8%B3%87%E6%96%99%E5%88%86%E6%9E%90-%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92-%E7%AC%AC4-1%E8%AC%9B-kaggle%E7%AB%B6%E8%B3%BD-%E9%90%B5%E9%81%94%E5%B0%BC%E8%99%9F%E7%94%9F%E5%AD%98%E9%A0%90%E6%B8%AC-%E5%89%8D16-%E6%8E%92%E5%90%8D-a8842fea7077


[3] [ Day31] Kaggle的解題挑戰 2018版 - Kaggle實戰 Titanic - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天

https://ithelp.ithome.com.tw/articles/10206089


[4] 【機器學習】Hello Kaggle! 機器學習競賽入門 Titanic - Jason Chen's Blog

https://jason-chen-1992.weebly.com/home/hello-kaggle

-----

[5] pandas.read_csv — pandas 1.2.3 documentation

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html


[6] Python sorted() 函数 | 菜鸟教程

https://www.runoob.com/python/python-func-sorted.html

-----

No comments: