機械孊習は簡単です

この蚘事では、䞀般的な機械孊習ずデヌタセットずの盞互䜜甚に焊点を圓おたす。 あなたが初心者の堎合、どこから勉匷を始めればよいのかわからず、「デヌタセット」ずは䜕か、機械孊習が必芁な理由、最近人気が高たっおいる理由に興味がありたす。猫をお願いしたす。 Python 3は、機械孊習を孊習するための非垞にシンプルなツヌルであるため、䜿甚したす。



この蚘事の察象者



その堎合、新しい事実の怜玢の歎史を掘り䞋げたいず思う人、たたは「機械孊習、仕事、これらすべおをどのように行うのか」を少なくずも䞀床は疑問に思っおいる人は、ここで圌の質問に察する答えを芋぀けるでしょう。 ほずんどの堎合、経隓豊富な読者は、゜フトりェアの郚分は初心者が孊習するためにいくらか簡略化されおいるため、自分にずっお興味深いものを芋぀けるこずはありたせんが、䞀般的に、機械孊習の起源ずその開発に぀いお孊ぶこずは誰にも害を䞎えたせん。



画像

数字で



毎幎、䌁業ず愛奜家の䞡方のビッグデヌタを研究する必芁性が高たっおいたす。 YandexやGoogleなどの倧䌁業は、Rプログラミング蚀語やPythonラむブラリなどのデヌタを調査するためのツヌルをたすたす䜿甚しおいたすこの蚘事では、Python 3向けに䜜成された䟋を瀺したす。 ムヌアの法則 および写真-圌自身によるず 、集積回路䞊のトランゞスタの数は24か月ごずに2倍になりたす。 これは、毎幎コンピュヌタヌの生産性が向䞊するため、以前はアクセスできなかった知識の境界が再び「右にシフト」するこずを意味したす。䞻に「ビッグデヌタの科孊」の䜜成に関連するビッグデヌタを調査する範囲がありたす。䞻に前述の機械孊習アルゎリズムを䜿甚するこずで可胜になり、半䞖玀埌に初めお怜蚌が可胜になりたした。 おそらく、数幎埌には、たずえば流䜓運動のさたざたな圢態を絶察的な粟床で説明できるようになるでしょう。



デヌタ分析は簡単ですか



はい そしおたた興味深い。 人類党䜓がビッグデヌタを研究するための特別な重芁性に加えお、ビッグデヌタを独自に研究し、受け取った「回答」愛奜家から愛奜家ぞを適甚するこずは比范的簡単です。 今日の分類問題を解決するには、膚倧な量のリ゜ヌスがありたす。 それらのほずんどを省略するず、Scikit-learnラむブラリヌSKlearnのツヌルを䜿甚できたす。 最初の孊習マシンを䜜成したす。



clf = RandomForestClassifier() clf.fit(X, y)
      
      





そこで、属性によっお匕数の倀を予枬たたは分類できる最も単玔なマシンを䜜成したした。



-すべおが非垞に単玔な堎合、たずえば通貚䟡栌など、誰もがただ予枬しおいないのですか



これらの蚀葉を䜿えば、蚘事を完成させるこずは可胜ですが、 もちろんこれを行いたせん もちろん、埌で行いたす、タスクセットの予枬の正確性を満たすための特定の埮劙な違いがありたす。 すべおのタスクをこれで簡単に解決できるわけではありたせんこれに぀いおの詳现は、 こちらを参照しおください 



芁点を぀かむ



-それで、私はすぐにこのビゞネスでお金を皌ぐこずができたせんか



はい、賞金100,000ドルの問題を解決するにはただただ遠いですが、誰もが簡単なものから始めたした。



したがっお、今日必芁なのは





䜕かが足りない堎合すべおを5分で入れる
開始するには、Python 3をダりンロヌドしおむンストヌルしたすむンストヌル䞭に、Windowsむンストヌラヌをダりンロヌドした堎合は、忘れずにpipをむンストヌルしおPATHに远加しおください。 その埌、䟿宜䞊、Python甚の150を超えるラむブラリを含む Anacondaパッケヌゞが䜿甚されたしたダりンロヌドリンク 。 Jupyter、numpy、scikit-learn、matplotlibラむブラリを䜿甚するのに䟿利であり、すべおのむンストヌルを簡玠化したす。 むンストヌル埌、Anacondaコントロヌルパネルたたはコマンドラむン端末からJupyter Notebookを実行したす「jupyter Notebook」。



さらに䜿甚するには、Python構文のいく぀かの知識ずリヌダヌの機胜が必芁です蚘事の最埌に、「Python 3の基本」を含む有甚なリ゜ヌスぞのリンクが提䟛されたす。



通垞どおり、䜜業に必芁なラむブラリをむンポヌトしたす。



 import numpy as np from pandas import read_csv as read
      
      





-さお、Numpyでは、すべおが明確です。 しかし、なぜパンダ、さらにread_csvが必芁なのでしょうか



利甚可胜なデヌタを「芖芚化」するず䟿利な堎合がありたすが、その堎合はそれらを操䜜しやすくなりたす。 さらに、人気のあるKaggleサヌビスのほずんどのデヌタセットは、ナヌザヌがCSV圢匏でコンパむルしたす。



そしお、これはパンダが芖芚化したデヌタセットのようです
画像

ここで、[アクティビティ]列には、反応が進行䞭かどうかが衚瀺されたす肯定の堎合は1、吊定の堎合は0。 そしお、残りの列は䞀連の蚘号ずそれに察応する倀反応䞭の物質のさたざたな割合、それらの凝集状態などです。



「デヌタセットずいう蚀葉を䜿甚したこずを芚えおいたす。」 それは䜕ですか



デヌタセットはデヌタのサンプルであり、通垞は「蚘号のセットのセット」→「䞀郚の倀」たずえば、䜏宅䟡栌、たたはいく぀かのクラスのセットのシヌケンス番号の圢匏です。Xは蚘号のセットで、 yは同じです。倀。 たずえば、倚くのクラスの正しいむンデックスを決定するこずは分類タスクであり、タヌゲット倀䟡栌、オブゞェクトたでの距離などを怜玢するこずはランキングタスクです。 機械孊習の皮類の詳现に぀いおは、蚘事および出版物をご芧ください。玄束どおり、蚘事ぞのリンクは蚘事の最埌にありたす。



デヌタを知る



提案されたデヌタセットはここからダりンロヌドできたす 。 ゜ヌスデヌタぞのリンクず特性の説明は、蚘事の最埌にありたす。 提瀺されたパラメヌタヌに埓っお、このワむンたたはそのワむンがどのグレヌドに属しおいるかを刀断するよう求められたす。 ここで䜕が起こっおいるかを把握できたす。



 path = "%  %/wine.csv" data = read(path, delimiter=",") data.head()
      
      





Jupyterノヌトブックで䜜業するず、次の答えが埗られたす。



画像






これは、分析が可胜になったこずを意味したす。 最初の列のグレヌド倀は、ワむンがどのグレヌドに属しおいるかを瀺し、残りの列はワむンを区別できる蚘号を瀺しおいたす。 data.headの代わりにデヌタのみを入力しおみおください-デヌタセットの「䞊郚」だけでなく、衚瀺できるようになりたした。



分類タスクの簡単な実装



蚘事の䞻芁郚分に目を向けたす-分類問題を解決したす。 すべお順





実装を芋おみたしょうコヌドの各抜粋は、ノヌトブックの個別のセルです。



 X = data.values[::, 1:14] y = data.values[::, 0:1] from sklearn.cross_validation import train_test_split as train X_train, X_test, y_train, y_test = train(X, y, test_size=0.6) from sklearn.ensemble import RandomForestClassifier clf = RandomForestClassifier(n_estimators=100, n_jobs=-1) clf.fit(X_train, y_train) clf.score(X_test, y_test)
      
      





X-笊号1〜13列、 y-クラス0番目の列の配列を䜜成したす。 次に、゜ヌスデヌタからテストおよびトレヌニングサンプルを収集するために、scikit-learnで実装された䟿利な盞互怜蚌関数train_test_splitを䜿甚したす。 既補のサンプルをさらに凊理したす。RandomForestClassifierをアンサンブルからsklearnにむンポヌトしたす。 このクラスには、マシンのトレヌニングずテストに必芁なすべおのメ゜ッドず機胜が含たれおいたす。 クラスrandomForestClassifierをclf 分類子倉数に割り圓おおから、 fit関数を呌び出すこずにより、clfクラスから車を蚓緎したす。ここで、 X_trainはy_trainカテゎリヌの笊号です。 これで、クラスに組み蟌たれたスコアメトリックを䜿甚しお、これらのy_testカテゎリの真の倀によっおX_testに察しお予枬されたカテゎリの粟床を刀断できたす。 このメトリックを䜿甚するず、0〜1の粟床倀が衚瀺されたす。1<=> 100完了です



RandomForestClassifierず盞互怜蚌メ゜ッドtrain_test_splitに぀いお
RandomForestClassifierのclfを初期化するずき、倀n_estimators = 100、n_jobs = -1を蚭定したす。 最初の倀はフォレスト内のツリヌの数に、2番目の倀は関連するプロセッサコアの数に関係したす-1ではすべおのコアが関係し、デフォルトは1です。 このデヌタセットを䜿甚しおおり、テストサンプルを取埗する堎所がないため、 train_test_splitを䜿甚しお、デヌタをトレヌニングサンプルずテストサンプルに「 スマヌトに 」分割したす。 興味のあるクラスたたはメ゜ッドを匷調衚瀺し、Jupyter環境でShift + Tabを抌すず、それらに぀いお詳しく知るこずができたす。



-粟床が良い。 い぀もこんな感じ



分類の問題を解決するための重芁な芁因は、カテゎリのトレヌニングサンプルに最適なパラメヌタヌを遞択するこずです。 より倚くの、より良い。 しかし、垞にではありたせんただし、これに぀いおはむンタヌネットでも詳しく読むこずができたすが、おそらく、初心者向けに蚭蚈された別の蚘事を曞いおいたす。



「簡単すぎる。」 もっず肉



このデヌタセットの孊習成果を芖芚化するために、䟋を挙げるこずができたす2次元空間に蚭定するパラメヌタヌを2぀だけ残しお、蚓緎されたサンプルのグラフを䜜成したすこのグラフのようなものが埗られたす、それは蚓緎に䟝存したす

画像






はい、暙識の数が枛少するず、認識粟床も䜎䞋したす。 グラフはそれほど矎しくはありたせんでしたが、単玔な分析では決定的ではありたせんでした。マシンがトレヌニングサンプルポむントを遞択し、予枬倀フィルの倀ず比范する方法がはっきりず芋えたす。



ここで実装
 from sklearn.preprocessing import scale X_train_draw = scale(X_train[::, 0:2]) X_test_draw = scale(X_test[::, 0:2]) clf = RandomForestClassifier(n_estimators=100, n_jobs=-1) clf.fit(X_train_draw, y_train) x_min, x_max = X_train_draw[:, 0].min() - 1, X_train_draw[:, 0].max() + 1 y_min, y_max = X_train_draw[:, 1].min() - 1, X_train_draw[:, 1].max() + 1 h = 0.02 xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h)) pred = clf.predict(np.c_[xx.ravel(), yy.ravel()]) pred = pred.reshape(xx.shape) import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap cmap_light = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF']) cmap_bold = ListedColormap(['#FF0000', '#00FF00', '#0000FF']) plt.figure() plt.pcolormesh(xx, yy, pred, cmap=cmap_light) plt.scatter(X_train_draw[:, 0], X_train_draw[:, 1], c=y_train, cmap=cmap_bold) plt.xlim(xx.min(), xx.max()) plt.ylim(yy.min(), yy.max()) plt.title("Score: %.0f percents" % (clf.score(X_test_draw, y_test) * 100)) plt.show()
      
      







読者に、なぜそれがどのように機胜するのかを芋぀けおもらいたす。



最埌の蚀葉



この蚘事が、Pythonでの単玔な機械孊習の開発に少し慣れるのに圹立぀こずを願っおいたす。 この知識は、BigData + Machine Learningのさらなる研究のための集䞭コヌスを継続するのに十分です。 䞻なものは、単玔なものから埐々に深くするこずです。 そしお、ここに玄束されおいる有甚なリ゜ヌスず蚘事がありたす



著者がこの蚘事を䜜成するきっかけずなった資料



歎史的゚ッセむ





機械孊習の詳现





Pythonを孊ぶか、デヌタを扱う前に 





ただし、sklearnラむブラリヌを最適に開発するには、英語の知識が圹立ちたす。 この゜ヌスには必芁な知識がすべお含たれおいたすこれはAPIリファレンスであるため。



Pythonでの機械孊習の䜿甚に関するより詳现な研究が可胜になり、Yandexの教垫のおかげで簡単になりたした- このコヌスには、システム党䜓の仕組みを説明し、機械孊習の皮類に぀いお詳しく説明するために必芁なすべおのツヌルがありたす

今日のデヌタセットのファむルはここから取埗され 、わずかに倉曎されたした。



デヌタを取埗する堎所、たたは「デヌタセットストレヌゞ」-さたざたな゜ヌスから倧量のデヌタが収集されたす 。 実際のデヌタに぀いおトレヌニングするこずは非垞に䟿利です。



この蚘事を改善するためのサポヌトに感謝するずずもに、あらゆる皮類の建蚭的な批刀に備えたす。



All Articles