簡単な機械学習プロジェクト


機械学習は人工知能の分野である.それは、データからパターンを学習し、直接の人間の介入なしに予測を行うために経験を使用する能力を持つコンピューターシステムを提供することを目指しています.
AndreyBu , ドイツ出身の経験豊かな機械学習専門家で、他の人に自分のスキルを教えるのが好きな人は、「機械学習は有益です.なぜなら、自動的に決断を下すためにアルゴリズムを訓練する機会を与えてくれるからです.通常、手動で要求され、時間がかかるのです.」
本稿では,python 3における簡単な分類マシン学習アルゴリズムを説明する.私たちは、Scikit Learningを使用します.そして、それはPythonアプリケーションのための単純で、用途が広くて、オープンソース機械学習フレームワークです.
また、我々はIris flower data set , これは機械学習の概念を理解するために使用できる一般的なデータセットです.

問題とデータの理解


Scikitの学習に組み込まれている虹彩花データセットは、150レコードのセットで構成されています.それには、3種の花セトサ(0)、ヴェルシノル(ラベル1)、およびヴァリイカ(ラベル2)が含まれており、それには以下のような数値属性がある.
  • 花弁幅
  • 花弁長
  • 隔壁幅
  • 隔壁長
  • 我々の機械学習アルゴリズムの目的は,それらの特性に従って花の種を予測することである.我々のモデルはそれらの特徴に基づいたデータセットからパターンを学習するよう訓練される.
    私たちの手を汚し始めましょう(我々はanacondaパイソン配布を使用するつもりです).
    アイリスデータセットはSciKit Learningとともに来ます、そして、我々は単に次のようにそれを読み込むことができます.
    from sklearn import datasets
    
    我々がデータセットからアイリス花の若干の特徴を得ることができるかどうか見ましょう.
    iris = datasets.load_iris()
    digits = datasets.load_digits()
    
    データセットがデータに関するすべての情報を保持する辞書のようなオブジェクトであることに注意することは重要です.このデータは.data key (配列リスト)
    そして、このように監督された問題を扱うとき、いくつかの応答を.target リスト.
    例えば、数字データセットに付属して、我々は使うことができますdigits.data 数字のサンプルを分類するための特性を理解する.
    コードと出力です.
    print(digits.data)
    

    またdigits.target 私たちは私たちが学ぶつもりでより多くの可視性を提供します.
    print(digits.target)
    

    また、データを使用してピークにすることができますiris.data (データの配列を与える)iris.target (ラベルの配列を指定)
    すべてのエントリには4つの属性があることに気づくでしょう.
    iris.data
    

    iris.target
    
    iris.target_names ラベルの名前の配列を与えます.即ち、データセット内の3種の花種である.iris.target_names
    さらに、我々はまたbox plot データセットのビジュアル表現を生成するには
    それは私たちのデータがどのように飛行機の上に散らばって表示されます四重奏を使う
    これがコードです.
    import seaborn as sns
    iris_data = iris.data #variable for array of the data
    iris_target = iris.target #variable for array of the labels
    sns.boxplot(data = iris_data,width=0.5,fliersize=5)
    sns.set(rc={'figure.figsize':(1,10)})
    
    これが出力です.

    ここでは、データが水平軸上でどのように表されるかを示します.
  • 0は、隔壁長(センチメートル)です
  • 1は、中隔幅(センチメートル)です
  • 2は花弁の長さ(センチメートル)
  • 3は花弁の幅(センチメートル)です
  • トレーニングとテスト


    我々のデータの詳細を理解した後、我々は今予測モデルを訓練するためのアルゴリズムを使用することができます.このように、我々のデータを2つのセットに分割する必要があります.
    データのセクションのトレーニングと機械学習モデルが相互作用しなかったもう一つのセットのデータをテストすることによって、それは我々のアルゴリズムがデータセットのパターンを特定できることを保証するのを助けます.そして、それは予測の正確さを改善します.
    この場合、我々はテストのための最後の15セットのデータを保持し、トレーニングの残りの部分を残します.したがって、データのトレーニングセットに基づいてアルゴリズムを訓練し、データのテストセットに基づいて予測します.
    いくつかのコードを見てみましょう.
    import numpy as np
    from sklearn import tree
    iris_test_ids = np.random.permutation(len(iris_data)) #randomly splitting the data set
    #splitting and leaving last 15 entries for testing, rest for training
    iris_train_one = iris_data[iris_test_ids[:-15]]
    iris_test_one = iris_data[iris_test_ids[-15:]]
    iris_train_two = iris_target[iris_test_ids[:-15]]
    iris_test_two = iris_target[iris_test_ids[-15:]]
    iris_classify = tree.DecisionTreeClassifier()#using the decision tree for classification
    iris_classify.fit(iris_train_one, iris_train_two) #training or fitting the classifier using the training set
    iris_predict = iris_classify.predict(iris_test_one) #making predictions on the test dataset
    

    結果を見る


    我々はランダムに設定されたデータを分割しているため、クラシファイヤーは、各反復の後に訓練されているので、コードが実行されるたびに、さまざまなレベルの精度を得ることができます.
    以下は結果を表示するコードです.
    from sklearn.metrics import accuracy_score
    print(iris_predict) #lables predicted (flower species)
    print (iris_test_two) #actual labels
    print (accuracy_score(iris_predict, iris_test_two)*100) #accuracy metric
    
    これが出力です.

    上記の出力の最初の行は、テストデータのラベルを与えますすなわち,分類器の予測に基づく花種である.
    2行目はデータセットに含まれる実種を与えます.そして最後の行は精度%を与える.この場合、精度は86.67 %であった.
    悪くない!

    結論


    プロジェクト全体のコードです.
    from sklearn import datasets
    import seaborn as sns
    import numpy as np
    from sklearn import tree
    from sklearn.metrics import accuracy_score
    
    iris = datasets.load_iris()
    digits = datasets.load_digits()
    print(digits.data)
    print(digits.target)
    print(iris.data)
    print(iris.target)
    print(iris.target_names)
    
    iris_data = iris.data #variable for array of the data
    iris_target = iris.target #variable for array of the labels
    sns.boxplot(data = iris_data,width=0.5,fliersize=5)
    sns.set(rc={'figure.figsize':(1,10)})
    
    iris_test_ids = np.random.permutation(len(iris_data)) #randomly splitting the data set
    #splitting and leaving last 15 entries for testing, rest for training
    iris_train_one = iris_data[iris_test_ids[:-15]]
    iris_test_one = iris_data[iris_test_ids[-15:]]
    iris_train_two = iris_target[iris_test_ids[:-15]]
    iris_test_two = iris_target[iris_test_ids[-15:]]
    iris_classify = tree.DecisionTreeClassifier()#using the decision tree for classification
    iris_classify.fit(iris_train_one, iris_train_two) #training or fitting the classifier using the training set
    iris_predict = iris_classify.predict(iris_test_one) #making predictions on the test dataset
    
    print(iris_predict) #labels predicted (flower species)
    print (iris_test_two) #actual labels
    print (accuracy_score(iris_predict, iris_test_two)*100) #accuracy metric
    
    この記事では、Pythonで簡単な機械学習プロジェクトを説明しました.
    あなたのマシンの学習知識を高めるためには、そのようなプロジェクトを完了する必要があります.
    より良いまだ、あなたはサイトから他の先進的なプロジェクトを選ぶことができますLiveEdu そして、機械学習であなたの専門知識を増やしてください.
    ハッピー学習機械学習!