「機械孊習の力を掻甚、ルヌク」たたはKSSによる照明噚具の自動分類

「機械孊習の力は私たちの䞭にあり、その方法は私たちを取り囲み、私たちを瞛りたす。 私の呚りの力、どこでも、私ずあなたずの間、決定的な朚、なげなわ、家王、参照ベクトル
だから、おそらく、ペヌダはデヌタサむ゚ンスの方法を教えおくれたら教えおくれるだろう。

残念ながら、私の知り合いの間では緑肌のしわのある人栌は芳察されたせんが、したがっお、 絶察に初心者のレベルから最終的に刀明するものの本圓のゞェダむたで、デヌタサむ゚ンスを教える共同の方法をあなたず䞀緒に続けたす。

最埌の2぀の蚘事では、光源をスペクトルに埓っお分類する問題を解決したしたそれぞれPythonずCで 。 今回は、照明匷床曲線照明噚具が床に映るスポットに応じおに埓っお噚具を分類する問題を解決しようずしたす。

既にパワヌの経路を理解しおいる堎合は、 Githubにデヌタセットをすぐにダりンロヌドしお、このタスクを自分で詊すこずができたす。 しかし、私のように、誰もがタックルを求めたす。

幞いなこずに、今回のタスクは非垞に単玔であり、それほど時間はかかりたせん。



私は本圓に蚘事の目次を第4゚ピ゜ヌドから始めたかったのですが、その名前は意味に合いたせんでした。

゚ピ゜ヌド I隠された脅嚁、たたは以前の䞀連の蚘事党䜓を読んでいない堎合にあなたを脅かすもの。


たあ、原則ずしお、䜕も脅かすものではありたせんが、デヌタサむ゚ンスデヌタサむ゚ンスを完党に初めお䜿甚する堎合は、最初の蚘事を正しい幎代順に芋るこずをお勧めしたす。これは、䜕らかの方法で初心者の目を通しおデヌタサむ゚ンスを芋る貎重な経隓なので、今、自分の道を説明しなければならないずしたら、私はそれらの感情を思い出すこずができず、問題のいく぀かは私にずっおばかげおいるように芋えるでしょう。 したがっお、あなたが始めたばかりの堎合、基本を孊んでどのように苊しめられたそしお今も苊しんでいるかを芋おください。

したがっお、ここに蚘事のリストが登堎順に最初から最埌たでありたす


たた、この蚘事から䜜業者、特にナヌザヌGadPetrovichの芁求に応じお、資料の目次を䜜成したす。

内容
゚ピ゜ヌドI幻圱の脅嚁、たたは以前の䞀連の蚘事党䜓を読んでいない堎合にあなたを脅かすもの。
゚ピ゜ヌドIIクロヌンの攻撃たたはこのタスクは過去ずあたり倉わらないようです
゚ピ゜ヌドIIIシスの埩ven、たたはデヌタマむニングの難しさに぀いお少し
゚ピ゜ヌドIVすべおが簡単か぀簡単に分類されるずいう新しい垌望
゚ピ゜ヌドV垝囜が反撃するか、「戊闘」で簡単にデヌタを準備するこずが難しい
゚ピ゜ヌドVIゞェダむの垰還、たたはあなたのモデルのために誰かによっお事前に曞かれた力を感じる
゚ピ゜ヌドVIIフォヌスが目芚める-結論の代わりに

゚ピ゜ヌド IIクロヌンの攻撃、たたはこのタスクは過去ずあたり倉わらないようです。


うヌん、2番目の芋出しであり、このスタむルを維持し続けるこずは難しいずすでに考えおいたす。

前回 、機械孊習タスク甚の独自のデヌタセットの䜜成、ロゞスティック回垰ずランダムフォレストの䟋を䜿甚したこれらのデヌタの分類子のトレヌニングモデル、PCA、T-SNEおよびDBSCAN
今回は、兆候は少なくなりたすが、タスクに根本的な違いはありたせん。

少し先に進むず、タスクが過去のクロヌンのように芋えないようにするために、今回の䟋ではSVC分類子に察応し、゜ヌスデヌタのスケヌリングが非垞に圹立぀こずを確認したす。

゚ピ゜ヌド IIIシスの埩ven、たたはマむニングデヌタの難しさに぀いお少し。


たず、光床曲線CSCずは䜕ですか
さお、これは次のようなものです


少しはっきりさせるために、頭の䞊にランプがあり、その䞋に立っおいる堎合街灯からの光のスポットのようにそのような光の円錐が足の䞋に萜ちるず想像しおください。
この写真は、異なる極角これが癜熱灯の瞊断面であるず想像しおください、2぀の方䜍角0-180ず90-270癜熱灯の暪断面であるず想像しおくださいのギャップでの光匷床円䞊の倀を瀺しおいたす。 倚分、私は非垞に正確に説明したせんでした。詳现に぀いおは、照明工孊ガむドペヌゞ833以降の Julian Borisovich Aisenbergに

しかし、元のデヌタに戻っお、広告ずは考えないでください。しかし、今日分類する備品はすべお、あるメヌカヌ、぀たり照明技術䌚瀟のものです。 私は圌らずは䜕の関係もありたせんし、圌らの蚀及から「硬貚」で私のポケットは満たされたせん

それでなぜ圌らは すべおが非垞にシンプルで、みんなはそれが私たちにずっお䟿利であるこずを確認したした。
デヌタを匕き出すために必芁なKSSおよび.iesファむルからの写真は、察応するアヌカむブに既に収集されおいたす。ダりンロヌドするだけで 、ネットワヌク党䜓を少しず぀収集するよりもはるかに䟿利です。

おそらく泚意深い読者は、それがすべおどこから来たのか、なぜこのセクションはシスの埩venず呌ばれるのかを尋ねるのをすでにむラむラしお埅っおいたすか 残酷な埩venはどこですか

たあ、どうやら詩の埩geは、長幎、数孊、プログラミング、照明、機械孊習以倖のこずをやっおいお、今は神経现胞でお金を払っおいるずいうこずでした。

遠くから少し始めたしょう...

これは、単玔な.iesファむルがどのように芋えるかです

IESNA:LM-63-1995
[TEST] SL20695
[MANUFAC] PHILIPS
[LUMCAT]
[LUMINAIRE] NA
[LAMP] 3 Step Switch A60 220-240V9.5W-60W 806lm 150D 3000K-6500K Non Dim
[BALLAST] NA
[OTHER] B-Angle = 0.00 B-Tilt = 0.00 2015-12-07
TILT=NONE
1 806.00 1 181 1 1 2 -0.060 -0.060 0.120
1.0 1.0 9.50
0.00 1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00
10.00 11.00 12.00 13.00 14.00 15.00 16.00 17.00 18.00 19.00
20.00 21.00 22.00 23.00 24.00 25.00 26.00 27.00 28.00 29.00
30.00 31.00 32.00 33.00 34.00 35.00 36.00 37.00 38.00 39.00
40.00 41.00 42.00 43.00 44.00 45.00 46.00 47.00 48.00 49.00
50.00 51.00 52.00 53.00 54.00 55.00 56.00 57.00 58.00 59.00
60.00 61.00 62.00 63.00 64.00 65.00 66.00 67.00 68.00 69.00
70.00 71.00 72.00 73.00 74.00 75.00 76.00 77.00 78.00 79.00
80.00 81.00 82.00 83.00 84.00 85.00 86.00 87.00 88.00 89.00
90.00 91.00 92.00 93.00 94.00 95.00 96.00 97.00 98.00 99.00
100.00 101.00 102.00 103.00 104.00 105.00 106.00 107.00 108.00 109.00
110.00 111.00 112.00 113.00 114.00 115.00 116.00 117.00 118.00 119.00
120.00 121.00 122.00 123.00 124.00 125.00 126.00 127.00 128.00 129.00
130.00 131.00 132.00 133.00 134.00 135.00 136.00 137.00 138.00 139.00
140.00 141.00 142.00 143.00 144.00 145.00 146.00 147.00 148.00 149.00
150.00 151.00 152.00 153.00 154.00 155.00 156.00 157.00 158.00 159.00
160.00 161.00 162.00 163.00 164.00 165.00 166.00 167.00 168.00 169.00
170.00 171.00 172.00 173.00 174.00 175.00 176.00 177.00 178.00 179.00
180.00
0.00
137.49 137.43 137.41 137.32 137.23 137.10 136.97
136.77 136.54 136.27 136.01 135.70 135.37 135.01
134.64 134.27 133.85 133.37 132.93 132.42 131.93
131.41 130.87 130.27 129.68 129.08 128.44 127.78
127.11 126.40 125.69 124.92 124.18 123.43 122.63
121.78 120.89 120.03 119.20 118.26 117.34 116.40
115.46 114.49 113.53 112.56 111.52 110.46 109.42
108.40 107.29 106.23 105.13 104.03 102.91 101.78
100.64 99.49 98.35 97.15 95.98 94.80 93.65
92.43 91.23 89.99 88.79 87.61 86.42 85.17
83.96 82.76 81.49 80.31 79.13 77.91 76.66
75.46 74.29 73.07 71.87 70.67 69.49 68.33
67.22 66.00 64.89 63.76 62.61 61.46 60.36
59.33 58.19 57.11 56.04 54.98 53.92 52.90
51.84 50.83 49.82 48.81 47.89 46.88 45.92
44.99 44.03 43.11 42.18 41.28 40.39 39.51
38.62 37.74 36.93 36.09 35.25 34.39 33.58
32.79 32.03 31.25 30.46 29.70 28.95 28.23
27.48 26.79 26.11 25.36 24.71 24.06 23.40
22.73 22.08 21.43 20.84 20.26 19.65 19.04
18.45 17.90 17.34 16.83 16.32 15.78 15.28
14.73 14.25 13.71 13.12 12.56 11.94 11.72
11.19 10.51 9.77 8.66 6.96 4.13 0.91
0.20 0.17 0.16 0.19 0.19 0.20 0.16
0.20 0.18 0.20 0.20 0.21 0.20 0.16
0.20 0.17 0.19 0.20 0.19 0.18


内郚では、メヌタヌの補造業者ず実隓宀に関するデヌタが瞫補されおいるほか、デヌタが必芁な極角ず方䜍角に䟝存する光の匷床など、ランプに関するデヌタも盎接瞫補されおいたす。

合蚈で193個のファむルを遞択したしたが、それらを手動で凊理しようずするこずすらほずんどありたせんでした。

䞀方では、すべおがGiesです。これは.iesファむルの構造を詳现に蚘述しおいたすが、他方では、必芁なデヌタを自動的に認識しお削陀するこずは私が思っおいたよりも困難でした。
しかし、あなたにずっお、映画の最高の䌝統のように、すべおの耇雑で退屈なものは「舞台裏」のたたです。 したがっお、デヌタの盎接的な説明に移りたす。

゚ピ゜ヌド IV新しい垌望...すべおが簡単か぀簡単に分類されるこず。


したがっお、䞊蚘で参照した文献の助けを借りお䞻芁な問題を掘り䞋げお、トレヌニングずデモの䟋でフィクスチャを分類するために、この堎合のいずれかの方䜍角に十分なデヌタスラむスがあるずいう結論に達したすれロに等しく、0から180たでの極角の範囲で、10ず぀増加したす品質のために小さなステップを螏むこずに意味はありたせんが、これは倧きな圱響はありたせん
぀たり、この堎合、デヌタは巊偎のグラフではなく右偎のグラフに衚瀺されたす。


ずころで、誰かが知らなかった堎合、MS Excelで花びらチャヌトを䜿甚するず、KCCグラフを簡単にプロットできたす。

Lighting Technologiesのアヌカむブでは、異なるKSSのランプが䞍均等に分垃しおいるため、4぀のタむプを分析したす。これは、元のデヌタセットに最も倚く含たれおいたす。

したがっお、次のKCCがありたす。
濃瞮K、深局G、䜙匊D、および半幅L。
最倧光匷床の方向の領域は、それぞれ次の角床にありたす。
K = 0°-15°; G = 0°-30°; D = 0°-35°; L = 35°-55°;
デヌタセットでラベルがラベルに割り圓おられたす。
K 1; G = 2; D = 3; L = 4; 最初から始めなければなりたせんでしたが、今はやり盎すのが面倒です

実際、照明工孊の分野の専門家ではないため、噚具を分類するこずは困難です。たずえば、䞊の図の噚具はKSSが深い噚具に起因するず考えられたすが、100確信はありたせん。

原則ずしお、物議を醞す問題を避け、GOSTず䟋を芋おみたしたが、どこかで間違いを犯した可胜性がありたす。クラスラベルの割り圓お、曞き蟌みに誀りがある堎合は、可胜であれば修正したす。

゚ピ゜ヌド V垝囜が反撃するか、「戊闘」でデヌタを簡単に準備するのが難しい


さお、デヌタを準備するこずが困難だった堎合、2人でこのゲヌムをプレむできるようです。分析するのは正反察です。 ゆっくり始めたしょう。
以䞋に瀺す.ipynbJupyter圢匏のすべおの゜ヌスコヌドを含むファむルは、 GitHubからダりンロヌドできるこずを再床お知らせしたす

そのため、開始するには、ラむブラリをむンポヌトしたす。

 #import libraries import warnings warnings.filterwarnings('ignore') import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib.patches as mpatches from sklearn.model_selection import train_test_split from sklearn . svm import SVC from sklearn.metrics import f1_score from sklearn.ensemble import RandomForestClassifier from scipy.stats import uniform as sp_rand from sklearn.model_selection import StratifiedKFold from sklearn.preprocessing import MinMaxScaler from sklearn.manifold import TSNE from IPython.display import display from sklearn.metrics import accuracy_score from sklearn.model_selection import train_test_split %matplotlib inline    <source lang="python"> #reading data train_df=pd.read_csv('lidc_data\\train.csv',sep='\t',index_col=None) test_df=pd.read_csv('lidc_data\\test.csv',sep='\t',index_col=None) print('train shape {0}, test shape {1}]'. format(train_df.shape, test_df.shape)) display('train:',train_df.head(4),'test:',test_df.head(4)) #divide the data and labels X_train=np.array(train_df.iloc[:,1:-1]) X_test=np.array(test_df.iloc[:,1:-1]) y_train=np.array(train_df['label']) y_test=np.array(test_df['label']) 

以前の蚘事を読んだり、Pythonでの機械孊習に粟通しおいる堎合、ここで玹介するすべおのコヌドは難しくありたせん。
ただし、念のため、最初にトレヌニングサンプルずテストサンプルのデヌタを衚に読み取り、次に蚘号極角の茝床ずクラスラベルを含む配列を切り取りたす。もちろん、わかりやすくするために、衚の最初の4行を印刷したした。 、ここで䜕が起こったのですか



あなたはそれを信じるこずができたす、デヌタはクラスNo.4曲線Lを陀倖するためにバランスが悪く、䞀般的に最初の3぀のクラスではトレヌニングサンプルで40サンプル、コントロヌルで12サンプル、教育およびコントロヌル党䜓で9であるため、トレヌニングサンプルずコントロヌルサンプルの比率は1/4に近い倀が維持されたす。
誰かの蚀葉を信じないこずに慣れおいるなら、コヌドを実行しおください

 #draw classdistributions test_n_max=test_df.label.value_counts().max() train_n_max=train_df.label.value_counts().max() fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(12,5)) train_df.label.plot.hist(ax=axes[0],title='train data class distribution', bins=7,yticks=np.arange(0,train_n_max+2,2), xticks=np.unique(train_df.label.values)) test_df.label.plot.hist(ax=axes[1],ti 

そしお、あなたは以䞋を芋るでしょう



蚘号に戻りたしょう。䞀方で、それらはすべお同じ倀を反映しおいたす。぀たり、倧たかに蚀っお、自転車の数ず気圧は盞関しおいたせん。倀のレベル、今回は倀の振幅が数䞇単䜍に達する可胜性がありたす。

したがっお、暙識を拡倧瞮小するこずは合理的です。 ただし、scikit-learnのすべおのスケヌリングモデルは列ごずにスケヌリングするように芋えたすたたは、私はそれを把握したせんでした。この堎合、列ごずにスケヌリングするこずは意味がありたせん。これは、「分類」 

代わりに、コヌナヌの光の力の分垃の性質を維持するためにサンプルのデヌタを行ごずにスケヌリングしたすが、同時に党䜓の広がりを0から1の範囲にドラむブしたす。

良い方法で、私が読んだ本では、圌らはトレヌニングセットずコントロヌル1モデルトレヌニングセットでトレヌニングされたをスケヌリングするようアドバむスしおいたすが、私たちの堎合、これは機胜の数の䞍䞀臎のために機胜したせんテストセットの行が少なくなり、転眮されたマトリックスは列数が少ない、各サンプルを独自の方法で調敎したす。

この問題に関連しお、先を芋据えお、分類プロセス䞭に、私はそれに関しお䜕も悪いこずを発芋したせんでした。

 #scaled all data for final prediction scl=MinMaxScaler() X_train_scl=scl.fit_transform(X_train.T).T X_test_scl=scl.fit_transform(X_test.T).T #scaled part of data for test X_train_part, X_test_part, y_train_part, y_test_part = train_test_split(X_train, y_train, test_size=0.20, stratify=y_train, random_state=42) scl=MinMaxScaler() X_train_part_scl=scl.fit_transform(X_train_part.T).T X_test_part_scl=scl.fit_transform(X_test_part.T).T 

あなたが完党な初心者であっおも、蚘事の過皋でscikit-learnセットのすべおのモデルが同様のむンタヌフェヌスを持っおいるこずに気付くでしょう、デヌタをfitメ゜ッドに枡すこずでモデルを蚓緎し、デヌタを倉換する必芁がある堎合、transformメ゜ッドを呌び出したすこの堎合、メ゜ッドを䜿甚したす2 in 1、および埌でデヌタを予枬する必芁がある堎合は、predictメ゜ッドを呌び出しお、新しいコントロヌルサンプルをフィヌドしたす。

さお、もう1぀小さな点ずしお、コントロヌルサンプル甚のタグがないこずを想像しおみたしょう。たずえば、kagle問題を解決したす。モデルの予枬の品質をどのように評䟡できたすか。

私たちの堎合、ビゞネス䞊の問題の解決が必芁ではない堎合、最も簡単な方法の1぀は、トレヌニングサンプルを別のトレヌニングサンプルに分割しただし小さい、テストトレヌニングからするこずです。これは少し埌で圹立ちたす。 それたでの間、スケヌリングに戻り、これがどのように圹立぀かを芋おみたしょう。スケヌリング機胜なしの䞀番䞊の画像、スケヌリング付きの䞀番䞋の画像です。

 #not scaled x=np.arange(0,190,10) plt.figure(figsize=(17,10)) plt.plot(x,X_train[13]) plt.plot(x,X_train[109]) plt.plot(x,X_train[68]) plt.plot(x,X_train[127]) c1 = mpatches.Patch( color='blue', label='class 1') c2 = mpatches.Patch( color='green', label='class 2') c3 = mpatches.Patch(color='orange', label='class 3') c4 = mpatches.Patch( color='red',label='class 4') plt.legend(handles=[c1,c2,c3,c4]) plt.xlabel('  (polar angle)') plt.ylabel('  (luminous intensity)') plt.title('   ') 

それを異なるセルに「ハンマヌ」で打ち蟌むたあ、たたはサブプロットを䜜成する

 #scaled x=np.arange(0,190,10) plt.figure(figsize=(17,10)) plt.legend() plt.plot(x,X_train_scl[13],color='blue') plt.plot(x,X_train_scl[109],color='green') plt.plot(x,X_train_scl[68], color='orange') plt.plot(x,X_train_scl[127], color='red') c1 = mpatches.Patch( color='blue', label='class 1') c2 = mpatches.Patch( color='green', label='class 2') c3 = mpatches.Patch(color='orange', label='class 3') c4 = mpatches.Patch( color='red',label='class 4') plt.legend(handles=[c1,c2,c3,c4]) plt.xlabel('  (polar angle)') plt.ylabel('  (luminous intensity)') plt.title('    ()') 



グラフには各クラスから1぀のサンプルが衚瀺されたすが、スケヌルグラフの䞀郚は、スケヌルの違いにより単玔にれロにマヌゞされるため、私たちずコンピュヌタヌはスケヌルグラフから䜕かを理解しやすくなりたす。

最終的に正しいこずを確認するために、フィヌチャの次元を2次元に枛らし、2次元グラフにデヌタを衚瀺しお、デヌタが分離可胜かどうかを確認しおみたしょうこれにはt-SNEを䜿甚したす
スケヌリングなしで巊スケヌリングありで右

 #T-SNE colors = ["#190aff", "#0fff0f", "#ff641e" , "#ff3232"] tsne = TSNE(random_state=42) d_tsne = tsne.fit_transform(X_train) plt.figure(figsize=(10, 10)) plt.xlim(d_tsne[:, 0].min(), d_tsne[:, 0].max() + 10) plt.ylim(d_tsne[:, 1].min(), d_tsne[:, 1].max() + 10) for i in range(len(X_train)): #  ,       plt.text(d_tsne[i, 0], d_tsne[i, 1], str(y_train[i]), color = colors[y_train[i]-1], fontdict={'weight': 'bold', 'size': 10}) plt.xlabel("t-SNE feature 0") plt.ylabel("t-SNE feature 1") 

それを異なるセルに「ハンマヌ」で打ち蟌むたあ、たたはサブプロットを䜜成する

 #T-SNE for scaled data d_tsne = tsne.fit_transform(X_train_scl) plt.figure(figsize=(10, 10)) plt.xlim(d_tsne[:, 0].min(), d_tsne[:, 0].max() + 10) plt.ylim(d_tsne[:, 1].min(), d_tsne[:, 1].max() + 10) for i in range(len(X_train_scl)): #  ,       plt.text(d_tsne[i, 0], d_tsne[i, 1], str(y_train[i]), color = colors[y_train[i]-1], fontdict={'weight': 'bold', 'size': 10}) plt.xlabel("t-SNE feature 0") plt.ylabel("t-SNE feature 1") 

れロからマヌクをカりントし始めたので、1を匕きたす。



図は、スケヌリングされたデヌタでは、クラス1、3、4が倚かれ少なかれ明確に区別可胜であり、クラス2はクラス1ず3の間で塗り぀ぶされおいるこずを瀺しおいたすダりンロヌドしおKCCフィクスチャを芋るず、そうであるべきこずが理解できたす

゚ピ゜ヌド VIゞェダむの埩掻、たたは以前に誰かがあなたのために曞いたモデルの力を感じたす


さお、今すぐ盎接分類を開始する時間です
たず、「切り捚おられたデヌタ」でSVCをトレヌニングしたす

 #predict part of full data (test labels the part of X_train) #not scaled svm = SVC(kernel= 'rbf', random_state=42 , gamma=2, C=1.1) svm.fit (X_train_part, y_train_part) pred=svm.predict(X_test_part) print("\n not scaled: \n results (pred, real): \n",list(zip(pred,y_test_part))) print('not scaled: accuracy = {}, f1-score= {}'.format( accuracy_score(y_test_part,pred), f1_score(y_test_part,pred, average='macro'))) #scaled svm = SVC(kernel= 'rbf', random_state=42 , gamma=2, C=1.1) svm.fit (X_train_part_scl, y_train_part) pred=svm.predict(X_test_part_scl) print("\n scaled: \n results (pred, real): \n",list(zip(pred,y_test_part))) print('scaled: accuracy = {}, f1-score= {}'.format( accuracy_score(y_test_part,pred), f1_score(y_test_part,pred, average='macro'))) 

次の結論が埗られたす

スケヌリングされない
not scaled:
results (pred, real):
[(2, 3), (2, 3), (2, 2), (3, 3), (2, 1), (2, 3), (2, 3), (2, 2), (2, 1), (2, 2), (1, 1), (3, 3), (2, 2), (2, 1), (2, 4), (3, 3), (2, 2), (2, 4), (2, 1), (2, 2), (4, 4), (2, 2), (4, 4), (2, 4), (2, 3), (2, 1), (2, 1), (2, 1), (2, 2)]
not scaled: accuracy = 0.4827586206896552, f1-score= 0.46380859284085096


スケヌリング枈み
scaled:
results (pred, real):
[(3, 3), (3, 3), (2, 2), (3, 3), (1, 1), (3, 3), (3, 3), (2, 2), (1, 1), (2, 2), (1, 1), (3, 3), (2, 2), (1, 1), (4, 4), (3, 3), (2, 2), (4, 4), (1, 1), (2, 2), (4, 4), (2, 2), (4, 4), (4, 4), (3, 3), (1, 1), (1, 1), (1, 1), (2, 2)]
scaled: accuracy = 1.0, f1-score= 1.0


ご芧のずおり、最初のケヌスで䜕ずか達成できた堎合、その差は非垞に倧きくなりたす。
結果はランダムな予枬よりもわずかに優れおいるだけで、2番目のケヌスでは100ヒットしたした。

完党なデヌタセットでモデルをトレヌニングし、100の結果が埗られるこずを確認したす

 #final predict full data svm.fit (X_train_scl, y_train) pred=svm.predict(X_test_scl) print("\n results (pred, real): \n",list(zip(pred,y_test))) print('scaled: accuracy = {}, f1-score= {}'.format( accuracy_score(y_test,pred), f1_score(y_test,pred, average='macro'))) 

結論を芋おみたしょう

results (pred, real):
[(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (2, 2), (2, 2), (2, 2), (2, 2), (2, 2), (2, 2), (2, 2), (2, 2), (2, 2), (2, 2), (2, 2), (2, 2), (2, 2), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (4, 4), (4, 4), (4, 4), (4, 4), (4, 4), (4, 4), (4, 4), (4, 4), (4, 4)]
scaled: accuracy = 1.0, f1-score= 1.0


パヌフェクト 粟床のメトリックずずもに、f1-scoreを䜿甚するこずにしたした。これは、クラスの䞍均衡が倧幅に倧きい堎合に圹立ちたすが、この堎合、メトリック間にほずんど違いはありたせんただし、明確にしたした。

さお、最埌に確認するのは、すでにわかっおいるRandomForest分類噚です
本や他の資料では、RandomForestの蚘号のスケヌリングは重芁ではないこずを読みたしたが、そうであるかどうかを芋おみたしょう。

 rfc=RandomForestClassifier(random_state=42,n_jobs=-1, n_estimators=100) rfc=rfc.fit(X_train, y_train) rpred=rfc.predict(X_test) print("\n not scaled: \n results (pred, real): \n",list(zip(rpred,y_test))) print('not scaled: accuracy = {}, f1-score= {}'.format( accuracy_score(y_test,rpred), f1_score(y_test,rpred, average='macro'))) rfc=rfc.fit(X_train_scl, y_train) rpred=rfc.predict(X_test_scl) print("\n scaled: \n results (pred, real): \n",list(zip(rpred,y_test))) print('scaled: accuracy = {}, f1-score= {}'.format( accuracy_score(y_test,rpred), f1_score(y_test,rpred, average='macro'))) 

次の結論が埗られたす。
not scaled:
results (pred, real):
[(1, 1), (1, 1), (2, 1), (1, 1), (1, 1), (2, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (2, 2), (2, 2), (2, 2), (1, 2), (2, 2), (2, 2), (2, 2), (2, 2), (3, 2), (2, 2), (3, 2), (2, 2), (4, 2), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (4, 3), (3, 3), (3, 3), (4, 4), (4, 4), (4, 4), (4, 4), (4, 4), (4, 4), (4, 4), (4, 4), (4, 4)]
not scaled: accuracy = 0.8541666666666666, f1-score= 0.8547222222222222

scaled:
results (pred, real):
[(1, 1), (1, 1), (2, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (2, 2), (2, 2), (2, 2), (2, 2), (2, 2), (2, 2), (2, 2), (2, 2), (2, 2), (2, 2), (2, 2), (2, 2), (2, 2), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (3, 3), (4, 4), (4, 4), (4, 4), (4, 4), (4, 4), (4, 4), (4, 4), (4, 4), (4, 4)]
scaled: accuracy = 0.9791666666666666, f1-score= 0.9807407407407408


したがっお、2぀の結論を導き出すこずができたす。
1.決定的なツリヌの堎合でも、属性をスケヌリングするず䟿利な堎合がありたす。
2. SVCの粟床が向䞊したした。

今回はパラメヌタヌを手動で遞択し、2回目の詊行でscvの2番目のオプションを獲埗した堎合、10回目からでもランダムフォレストでそれを遞択せず​​、スパッツしおデフォルトで残したしたツリヌの数を陀く。 おそらく、100の粟床をもたらすパラメヌタヌがあり、それを拟い䞊げおコメントで䌝えるようにしおください。

さお、それですべおですが、スタヌりォヌズのファンは、サガの7番目の映画に蚀及しないこずを私に蚱さないず思いたす...

゚ピ゜ヌド VII力の芚醒-結論の代わりに。


機械孊習はずお぀もなく魅力的なものであるこずが刀明したしたが、私は今でも皆さんの近くで問題を芋぀けお解決しようずするこずをみんなに勧めおいたす。
すぐにうたくいかない堎合は、䞋の写真のように錻を垂らさないでください。



はい、はい あなたがこれが「あなたの錻をハングアップしないでください」ず他の隠された考えがないずは思わないように;

そしお、力があなたず共に来たすように

Source: https://habr.com/ru/post/J338124/


All Articles