最初の機械学習モデルの構築(4)



このポストでは、データセットに機械学習を適用し、モデルで予測を行う迅速かつ簡単な例を示します.
次のようになります.
  • Python
  • パンダはデータ構造とデータ解析や可視化に役立つ
  • Scikitは学び、そして
  • IRISデータセット
  • 私はあまりにも深くこれらのツールを使用する方法でダイビングすることはありません.しかし、私がこのポストでカバーするもののために、大部分のデータセットを通してあなたを得るのに十分であるべきです.
    始めましょう!

    データを得る


    最初に虹彩データセットをダウンロードしましょう.あなたは虹彩データセットをダウンロードすることができますhere とCSVファイルとして保存します.
    パンダをインポートして、CSVファイルを読みましょう.
    import pandas as pd
    dataset = pd.read_csv("./iris.csv")
    # let’s see a sample of our data
    dataset.head()
    
    The .head() 関数は、私たちのデータセットの最上位行を示します.
    列とデータを含む行を見ることができます.

    私たちのデータセットを見て、我々は列です
    ["sepal_length", "sepal_width", "petal_length", "petal_width", "species"]
    
    我々は、我々の目標(我々が予測しようとしていること、yとも呼ばれる)を作りたいですspecies 列と残りの列[sepal_length, sepal_width, petal_length, petal_width] 私たちの機能(Xとも呼ばれます).
    y = dataset["species"]
    
    features = ["sepal_length", "sepal_width", "petal_length", "petal_width"]
    X = dataset[features]
    

    データの分割


    次に、データを分割する必要があります.通常、我々はデータを3部に分割する必要がある.トレーニングのためのもの、検証のための2番目、およびテストのための第3.
  • トレーニングのためのトレーニングデータ
  • 検証データをモデルと
  • モデルをテストするテストデータ
  • トレーニングデータのライフサイクルがすべてのトレーニングで消耗するので、検証データセットが必要です.基本的に、我々のモデルは、それがバイアスを形成するかもしれなくて、新しい、見えないデータに我々のモデルのパフォーマンスに影響を及ぼすかもしれないという我々のトレーニングデータセットであまりによくわかります.検証データは、我々のモデルが目に見えないデータさえよく実行することを確認します.
    データセットのテストは、検証データをテストした後のモデルの' final '性能を見たい場合です.何も“ファイナル”ですが.機械学習は継続的な改善であるが、ただ我々のモデルがまだ見えないデータに対してもうまく機能することを確認できる.
    Scikitの学習はtrain_test_split 関数をトレーニングと検証に分割します.
    *私はそれがテストのために分割することができるかどうか、現在確信していません😅✌🏽しかし、これは私たちの小さなプロジェクトに十分です
    from sklearn.model_selection import train_test_split
    
    #splitting our dataset for training and validation
    #random_state to shuffle our data
    train_X, val_X, train_y, val_y = train_test_split(X, y, random_state=1)
    

    データの変換


    優れた!しかし、機械学習は文字を理解しません.機械学習は,数学式と束の下での操作の束で構成される.数学では、1 + 1 = 2とは言わない.1 + 1 = 2でなければなりません.
    Y (ターゲット変数)は現在文字または文字です.[‘Versicolor’, ’Setosoa’, ‘Verginica’] . 我々はどうにか、これが機械学習が理解できる意味のある数に変える必要があります.
    それは[ 0 , 1 , 2 ]右を行うのが簡単になりましたか?
    しかし、このアプローチの問題は、機械学習が、ラベルの順序に相関があると考えて、その順序によってバイアスを形成するかもしれないということです.
    推奨されるアプローチはone-hot encoding . 幸いなことに、パンダは、我々が便利に使用できる1つのホットエンコーダ機能を内蔵しています.
    train_y = pd.get_dummies(train_y)
    val_y = pd.get_dummies(val_y)
    
    優れた!我々のモデルを訓練し始めましょう.我々は、Scikit Learnのものを使用していますRandomForestClassifier 植物を分類しようとしているので.
    from sklearn.ensemble import RandomForestClassifier
    
    random_forest = RandomForestClassifier(random_state=1)
    random_forest.fit(train_X, train_y)
    
    あれrandom_state 基本的に私たちのデータをシャッフルします.これは、我々のモデルが我々の与えられたトレーニングデータの命令に偏らないことを確認します.

    モデルのテスト


    では、検証データを使ってモデルを検証しましょう.
    from sklearn.metrics import mean_absolute_error
    
    preds = random_forest.predict(val_X)
    mae = mean_absolute_error(val_y, preds)
    
    print("Mean absolute error is: {:,.5f}".format(mae * 100))
    print(random_forest.score(val_X, val_y) * 100)
    
    平均絶対誤差は、基本的に我々のモデルの平均誤差です.平均絶対誤差が低いほど、我々のモデルの性能はより高い.
    The .score() 関数は検証データに対するモデルの性能のスコアを与える.
    現在、平均的な絶対的なエラーは、私が考えています.と.score() 高すぎます.データ漏えいの可能性があります.そして、我々のモデルにさえはまります.
    私はあまりにも多くの中に飛び込むことはありませんが、これらのモデルの性能に深刻な影響を与えることができるので、我々のモデルでデータの漏洩とオーバーフィッティングを避けるために最善です.
    我々のモデルをテストしましょう我々?私は手動でそれが予測するかを見るために私たちのモデルでテストデータを配置しました.
    preds = random_forest.predict([[2.0, 1.9, 3.7, 2]])
    print(preds)
    
    結果が得られます.
    [[0. 1. 0.]]
    
    Y変数の検査print(y) このように見えます.
    瀬戸佐
    ベシクル
    シジミ
    0
    1
    0
    我々の予測を見て、我々は我々の与えられたテストデータに基づきversicolor .
    我々が論理的に結論することができるデータを検査することは、それが実際に全く正しいと結論付けます!
    甘い!モデルを予測する新しいモデルを訓練した.信じられない!あなた自身にコーヒーブレークを与えてください.☕️ 祝辞🎉🎉🎉
    あなたは私のマシンの学習の旅シリーズを楽しんで希望.あなたも何かを学びました😅 私は、あなたが持っているかもしれないどんなフィードバックでも開いています、あるいは、何かが間違っているかもしれないならば、下記のコメントをしてください.
    このコードをフォローしようとする人には、私は仕事をしますkaggle notebook この例では.
    ありがとう!
    私はちょうど私のYouTubeチャンネルで私のHello Worldビデオをアップロードしました!ドロップバイアンドハイ😄 閉じるこの動画はお気に入りから削除されています✌🏽