教師あり学習とは、説明変数から目的変数を予測するモデルを作成するために、正解の目的変数から学習する方法です。そのため、必ず説明変数と同時に正解となるような目的変数を用意する必要があります。ちなみに、教師なし学習は正解例となる目的変数がない学習のことです。*パラメータの表はscikit-learnのドキュメントをGoogle翻訳しただけのものです。説明変数と目的変数で学習をして、ある説明変数から目的変数を予測するものです。具体的には、部屋の間取りと築年数、駅までの距離などの説明変数から家賃という目的変数を予測するものです。いうよりも統計学で使用され続けている手法です。回帰問題ではまずこれを試すと良いでしょう。複数の場合は重回帰分析です。scikit-learnで単回帰分析する際は注意しなければならない点があります。「単回帰分析でSCIKIT-LEARNに説明変数を準備する際の注意点」を参考にしてください。回帰分析では、説明変数と目的変数をグラフにすると線形(曲線ではなく直線)になることが大事です。式が成り立つということです。回帰分析はScikit-learnに用意されている「sklearn.linear_model」を使うことで簡単に分析できます。「sklearn.linear_model」を使うには事前にインポートしておく必要があります。重回帰分析の場合は次のようにします。次の例はBostonの物件の家賃を求める内容のものです。:最小二乗法で傾きを求める方法を数学的に理解しよう最小二乗法についてはGitHubを参照ください。bool型で指定、オプション、デフォルトはTrueこのモデルの切片を計算するかどうか。Falseに設定すると、計算でインターセプトは使用されません(つまり、データは中央に配置されることが期待されます)。:boolの正規化、オプション、デフォルトはFalsefit_interceptがFalseに設定されている場合、このパラメーターは無視されます。Trueの場合、平均を減算してl2-normで除算することにより、回帰の前にリグレッサXが正規化されます。標準化する場合は、で見積もりをsklearn.preprocessing.StandardScaler呼び出す前に使用してください。bool型で指定、オプション、デフォルトはTrueTrueの場合、Xがコピーされます。それ以外の場合は上書きされます。None)計算に使用するジョブの数。1および十分な大規模な問題に対してのみ高速化を提供します。コンテキストにNoneない限り1を意味しjoblib.parallel_backendます。-1すべてのプロセッサを使用することを意味します。RidgeRidge回帰とLasso回帰は回帰係数を推定する時に、損失関数に対して何らかのペナルティを加える仕組みのものです。このような仕組みを正則化といいます。正則化には、誤差を二乗する方法と絶対値をとる方法の2種類の方法があります。ちなみに、絶対値で計算する方法をL1ノルムといい、二乗する方法のことをL2ノルムといいます。Ridge回帰は正則化するときに二乗する方法です。正則化の数学的な意味合いは別のサイトで詳細に書かれていますので、参考にすると良いでしょう。正則化を行うことで、モデルの複雑さが抑えられる効果があります。モデルの複雑さとは、つまり回帰問題の場合には回帰係数が大きくなる傾向のことをいいます。回帰係数が大きくなると、それぞれの説明変数の値が大きく作用してしまう結果になります。結果的に過学習になってしまう可能性が出てきます。正の浮動小数点数でなければなりません。正則化により、問題の条件付けが改善され、推定値の分散が減少します。値を大きくすると、より強い正則化が指定されます。アルファはC^-1、LogisticRegressionやLinearSVCなどの他の線形モデルに対応します。配列が渡される場合、ペナルティはターゲットに固有であると見なされます。したがって、それらは番号で対応している必要があります。Trueこのモデルの切片を計算するかどうか。falseに設定すると、インターセプトは計算に使用されません(つまり、データは中央に配置されます)。デフォルト=Falsefit_interceptがFalseに設定されている場合、このパラメーターは無視されます。Trueの場合、平均を減算してl2-normで除算することにより、回帰の前にリグレッサXが正規化されます。標準化する場合は、見積もりをsklearn.preprocessing.StandardScaler呼び出す前に使用してください。TrueTrueの場合、Xがコピーされます。それ以外の場合は上書きされます。共役勾配ソルバーの最大反復回数。‘lsqr’ソルバーの場合、デフォルト値はscipy.sparse.linalgによって決定されます。’sag’ソルバーのデフォルト値は1000です。1e-3ソリューションの精度。‘saga’}計算ルーチンで使用するソルバー:‘auto’は、データのタイプに基づいてソルバーを自動的に選択します。‘svd’は、Xの特異値分解を使用してリッジ係数を計算します。「cholesky」よりも特異行列に対してより安定しています。‘cholesky’は、標準のscipy.linalg.solve関数を使用して、閉形式の解を取得します。‘sparse_cg’は、scipy.sparse.linalg.cgにある共役勾配ソルバーを使用します。反復アルゴリズムとして、このソルバーは、大規模なデータ(設定tolおよび可能性max_iter)に’cholesky’よりも適切です。‘lsqr’は、専用の正規化された最小二乗ルーチンscipy.sparse.linalg.lsqrを使用します。これは最速であり、反復手順を使用します。使用し、「saga」はSAGAという名前の改良された不偏バージョンを使用します。どちらの方法も反復手順を使用し、n_samplesとn_featuresの両方が大きい場合、多くの場合、他のソルバーよりも高速です。「sag」と「saga」の高速収束は、ほぼ同じスケールのフィーチャでのみ保証されることに注意してください。sklearn.preprocessingのスケーラーでデータを前処理できます。最後の5つのソルバーはすべて、密データと疎データの両方をサポートしています。fit_interceptTrueの場合、「sparse_cg」のみがスパース入力をサポートします。int型で指定、RandomStateインスタンスまたはNone、デフォルトNoneデータをシャッフルするときに使用する擬似乱数ジェネレーターのシード。intの場合、random_stateは乱数ジェネレーターが使用するシードです。RandomStateインスタンスの場合、random_stateは乱数ジェネレーターです。Noneの場合、乱数ジェネレーターはによって使用されるRandomStateインスタンスnp.randomです。‘sag’の場合に使用されます。LassoLassoは正則化にL1ノルムを使用してペナルティを付け加えています。Lassoの特徴はハイパーパラメータのアルファー値を調整することで特定の説明変数の係数(重み)が0になる性質があり、次元削減の効果を生み出します。float型で指定L1項を乗算する定数。デフォルトは1.0です。オブジェクトによって解決される通常の最小二乗に相当します。数値上の理由から、オブジェクトで使用することはお勧めしません。これを考えると、オブジェクトを使用する必要があります。Trueこのモデルの切片を計算するかどうか。Falsefit_interceptがFalseに設定されている場合、このパラメーターは無視されます。Trueの場合、平均を減算してl2-normで除算することにより、回帰の前にregressorsXが正規化されます。見積もりをsklearn.preprocessing.StandardScaler呼び出す前に使用してください。default=False計算を高速化するために事前計算されたGram行列を使用するかどうか。’auto’決定するように設定されている場合。Gram行列も引数として渡すことができます。スパース入力の場合、このオプションは常にTrueスパース性を保持します。TrueTrueの場合、Xがコピーされます。それ以外の場合は上書きされます。最適化の許容範囲:更新がより小さい場合tol、最適化コードは二重ギャップの最適性をチェックし、それがより小さいまで継続しtolます。bool型で指定Trueに設定すると、以前の呼び出しのソリューションを再利用して初期化に適合させます。それ以外の場合は、以前のソリューションを消去します。用語集を参照してください。bool型で指定に設定するTrueと、係数が強制的に正になります。int型で指定、RandomStateインスタンスまたはNone、オプション、デフォルトNone更新するランダム機能を選択する擬似乱数ジェネレーターのシード。intの場合、random_stateは乱数ジェネレーターが使用するシードです。RandomStateインスタンスの場合、random_stateは乱数ジェネレーターです。Noneの場合、乱数ジェネレーターはによって使用されるRandomStateインスタンスnp.randomです。‘random’の場合に使用されます。‘cyclic’「ランダム」に設定すると、ランダム係数はデフォルトでフィーチャーを順番にループするのではなく、反復ごとに更新されます。これ(「ランダム」に設定)は、特にtolが1e-4よりも大きい場合に、収束を大幅に高速化することがよくあります。決定木は分類問題で使われますが、DecisionTreeRegressorクラスを使用して、決定木を回帰問題に適用することもできます。max_depthパラメーター)の設定が高すぎる場合、決定木はノイズから学習してしまい、オーバーフィットする傾向があります。決定木は回帰直線の傾きを求めているのではないため、傾きや切片の値は得られません。(default=”mse”)スプリットの品質を測定する機能。サポートされる基準は、平均2乗誤差の「mse」です。これは、特徴選択基準としての分散低減に等しく、潜在的なフリードマンの改善スコアを持つ平均2乗誤差を使用する各端末ノード「friedman_mse」各端末ノードの中央値を使用してL1損失を最小化する平均絶対誤差の「前」。バージョン0.18の新機能:平均絶対誤差(MAE)基準。(default=”best”)各ノードで分割を選択するために使用される戦略。サポートされている戦略は、最適な分割を選択する「最良」と、最適なランダム分割を選択する「ランダム」です。(default=None)ツリーの最大の深さ。Noneの場合、すべてのリーフが純粋になるか、すべてのリーフにmin_samples_splitサンプル未満が含まれるまで、ノードが展開されます。(default=2)内部ノードを分割するために必要なサンプルの最小数:intの場合min_samples_split、最小数と見なされます。あり、各分割の最小サンプル数です。n_samples)バージョン0.18で変更:分数にfloat値を追加しました。(default=1)リーフノードにあるために必要なサンプルの最小数。任意の深さの分割ポイントmin_samples_leafは、左右のブランチのそれぞれに少なくともトレーニングサンプルが残っている場合にのみ考慮されます。これは、特に回帰において、モデルを平滑化する効果があるかもしれません。intの場合min_samples_leaf、最小数と見なされます。あり、各ノードの最小サンプル数です。n_samples)バージョン0.18で変更:分数にfloat値を追加しました。(default=0.)リーフノードにある必要がある(すべての入力サンプルの)重みの合計の最小重み付き割合。sample_weightが指定されていない場合、サンプルの重みは等しくなります。(default=None)最適な分割を探すときに考慮する機能の数:intの場合max_features、各分割で機能を検討します。フィーチャは各分割で考慮されます。n_features)そして、「自動」の場合max_features=n_features。「SQRT」の場合max_features=sqrt(n_features)。「LOG2」の場合max_features=log2(n_features)。その後、なしの場合max_features=n_features。注:複数のmax_features機能を効果的に検査する必要がある場合でも、ノードサンプルの有効なパーティションが少なくとも1つ検出されるまで、分割の検索は停止しません。(default=None)intの場合、random_stateは乱数ジェネレーターが使用するシードです。RandomStateインスタンスの場合、random_stateは乱数ジェネレーターです。Noneの場合、乱数ジェネレーターはによって使用されるRandomStateインスタンスnp.randomです。(default=None)max_leaf_nodes最高の方法で木を育てます。最良のノードは、不純物の相対的な減少として定義されます。なしの場合、リーフノードの数に制限はありません。(default=0.)この分割がこの値以上の不純物の減少を引き起こす場合、ノードは分割されます。重み付き不純物減少方程式は次のとおりです。left_impurity)ここNで、はサンプルの合計数、N_tは現在のノードN_t_Lのサンプル数、は左の子N_t_Rのサンプルの数、は右の子のサンプルの数です。N、N_t、N_t_RとN_t_Lあればすべて、加重和を参照してくださいsample_weight渡されます。(default=0.0)最小コスト複雑性プルーニングに使用される複雑性パラメーター。ccp_alpha選択されるよりも小さい最大のコスト複雑度を持つサブツリー。デフォルトでは、プルーニングは実行されません。最小コストの複雑さのプルーニングを参照してください。SVR)はサンプル数が10000以下などの場合に有効です。サンプル数が多い場合は適していません。(default=0.0)イプシロンに依存しない損失関数のイプシロンパラメーター。このパラメーターの値は、ターゲット変数yのスケールに依存することに注意してください。不明な場合は、を設定しepsilon=0ます。(default=1e-4)停止基準の許容範囲。(default=1.0))正則化パラメーター。正則化の強度はCに反比例します。厳密に正でなければなりません。(default=’epsilon_insensitive’)損失関数を指定します。‘squared_epsilon_insensitive’)はL2損失です。(default=True)このモデルの切片を計算するかどうか。falseに設定すると、計算でインターセプトは使用されません(つまり、データは既に中央に配置されていることが予想されます)。(default=1)self.fit_interceptがTrueの場合、インスタンスベクトルxは[x、self.intercept_scaling]になります。intercept_scalingに等しい定数値を持つ「合成」機能がインスタンスベクトルに追加されます。*合成フィーチャの重みになります。l2正則化の対象となります。合成フィーチャの重み(したがって、インターセプト)に対する正則化の影響を軽減するには、intercept_scalingを増やす必要があります。(default=True)アルゴリズムを選択して、デュアルまたはプライマル最適化問題を解決します。Falseを優先します。(default=0)詳細出力を有効にします。この設定は、liblinearのプロセスごとのランタイム設定を利用します。これは、有効にすると、マルチスレッドコンテキストで適切に動作しない場合があります。(default=None)データをシャッフルするときに使用する擬似乱数ジェネレーターのシード。intの場合、random_stateは乱数ジェネレーターが使用するシードです。RandomStateインスタンスの場合、random_stateは乱数ジェネレーターです。Noneの場合、乱数ジェネレーターはによって使用されるRandomStateインスタンスnp.randomです。2値、または複数値に目的変数を分類するものです。分類問題では、アイリスの種類を分類するデータをそれぞれの学習器にかけてその使い方と特徴を説明します。ロジスティック回帰ロジスティック回帰は回帰となっていますが、分類問題で使うものです。回帰問題には使えないので間違わないようにしましょう。名前が回帰となっているのは、アルゴリズムに線形回帰モデルと同様のアルゴリズムを使っているからです。そこで出された結果をロジット関数(シグモイド関数)で確率に変換します。確率の値は0から1までの数値で表されますが、一定の閾値を決めておけば、0.5以上は陽性(1)それ以下は陰性(0)などとすることができます。そのような仕組みから、ロジスティック回帰は2値分類が得意とされています。(多値分類ができないというのではありません)ちなみに、シグモイド関数はディープラーニングでも頻繁に使用される関数です。簡単な考え方ですので数学的に理解しておいて損はないと思いますので、勉強しておくと良いでしょう。width)だけで学習させておいて、花弁の幅のサイズがどのサイズの時に「Virginica種」と判定するか決定境界を確認するコードです。その結果はグラフとして表示されます。結果のグラフからわかるように、花弁の幅が1.4センチくらいからVerginica種の存在感が出てきて、2センチ以上になるとかなりその確率が高くなってきています。この分類器は確率50%のところを決定境界にして、1と0に分類していることが読めてきます。ロジスティック回帰には標準でL2ペナルティが設定されている。ペナルティの強さはハイパーパラメータのCの値を変更することで調整できます。Cの値が大きくなると正則化は弱まります。‘l2’)ペナルティに使用される基準を指定するために使用されます。‘lbfgs’ソルバーは、l2のペナルティーのみをサポートします。「elasticnet」は「saga」ソルバーによってのみサポートされます。’none’(liblinearソルバーでサポートされていない)の場合、正則化は適用されません。False)デュアルまたはプライマル製剤。デュアル定式化は、liblinearソルバーを使用したl2ペナルティに対してのみ実装されます。Falseを優先します。1e-4)停止基準の許容範囲。1.0)正則化強度の逆数。正の浮動小数点数でなければなりません。サポートベクターマシンと同様に、値が小さいほど正則化が強くなります。True)定数(バイアスまたはインターセプト)を決定関数に追加するかどうかを指定します。‘liblinear’が使用され、self.fit_interceptがTrueに設定されている場合にのみ有用です。この場合、xは[x、self.intercept_scaling]になります。intercept_scalingに等しい定数値を持つ「合成」機能がインスタンスベクトルに追加されます。l2正則化の対象となります。合成フィーチャの重み(したがって、インターセプト)に対する正則化の影響を軽減するには、intercept_scalingを増やす必要があります。‘balanced’、オプション(デフォルト=なし)フォーム内のクラスに関連付けられた重み。指定しない場合、すべてのクラスに重み1が割り当てられます。weight}「平衡」モードでは、yの値を使用して、入力データのクラス頻度に反比例する重みをとして自動的に調整します。np.bincount(y))sample_weightが指定されている場合、これらの重みはsample_weightで乗算されることに注意してください(fitメソッドを介して渡されます)。None)データをシャッフルするときに使用する擬似乱数ジェネレーターのシード。intの場合、random_stateは乱数ジェネレーターが使用するシードです。RandomStateインスタンスの場合、random_stateは乱数ジェネレーターです。Noneの場合、乱数ジェネレーターはによって使用されるRandomStateインスタンスnp.randomです。‘liblinear’の場合に使用されます。‘lbfgs’)最適化問題で使用するアルゴリズム。小さなデータセットの場合、「liblinear」が適切な選択ですが、「sag」と「saga」は大きなデータセットの場合に高速です。マルチクラス問題の場合、「newton-cg」、「sag」、「saga」、および「lbfgs」のみが多項損失を処理します。「liblinear」は、1対残りのスキームに制限されています。penalty=’none’「サグ」と「サガ」の高速収束は、ほぼ同じスケールのフィーチャでのみ保証されることに注意してください。sklearn.preprocessingのスケーラーでデータを前処理できます。100)ソルバーが収束するために取られる反復の最大数。‘auto’選択したオプションが「ovr」の場合、バイナリ問題が各ラベルに適合します。「多項」の場合、最小化される損失は、データがbinaryであっても、確率分布全体にわたる多項損失適合です。‘multinomial’は使用できません。‘multinomial’を選択します。0)liblinearおよびlbfgsソルバーでは、冗長性のためにverboseを任意の正数に設定します。False)Trueに設定すると、以前の呼び出しのソリューションを再利用して初期化に適合させます。それ以外の場合は、以前のソリューションを消去します。liblinearソルバーには役に立たない。用語集を参照してください。‘ovr’”の場合、クラスを並列化するときに使用されるCPUコアの数。solver「multi_class」が指定されているかどうかに関係なく、が「liblinear」に設定されている場合、このパラメーターは無視されます。コンテキストにNoneない限り1を意味しjoblib.parallel_backendます。-1すべてのプロセッサを使用することを意味します。None)Elastic-Netのミキシングパラメーター。usingと同等の場合にのみ使用され、設定はusingと同等です。場合、ペナルティはL1とL2の組み合わせです。<1k-近傍法k-近傍法は機械学習の中でも最も簡単な仕組みでできています。k-近傍法の考え方は、分類したいデータのひとつがどの訓練データと同じクラスかを予測するには、訓練データの中から1番近い点つまり最近傍点を見つけることです。pred0の最も近い点は青丸だからclass0に分類されることになります。pred1の最も近い点はオレンジ三角だからclass1に分類されることになります。次の例では、近傍点は1つに限らず、任意の個数として考えます。1つ以上の近傍点を扱う場合は多数決でラベルを決めます。この例の場合は3つの近傍点を考慮しており、pred0、pred1どちらもオレンジ三角の数が多いのでどちらもclass1になります。特徴と欠点k-最近傍法はアルゴリズムとして理解しやすいという特徴があります。多くの場合あまり調整の必要がなくても十分な性能が得られます。欠点として、訓練セットが大きくなると予測に時間がかかります。事前のデータ前処理が重要になります。多くの特徴量(説明変数)をもつデータセットではうまく機能しません。特徴量の多くが0になるようなデータセットでは性能が悪くなります。従って、現実的にはあまり活用されないアルゴリズムになっています。5)kneighborsクエリにデフォルトで使用するネイバーの数。‘uniform’)予測で使用される重み関数。可能な値:「均一」:均一な重み。各近傍のすべてのポイントは等しく重み付けされます。‘distance’:距離の逆数による重みポイント。この場合、クエリポイントのより近い隣人は、より遠くにある隣人よりも大きな影響力を持ちます。[callable]:距離の配列を受け入れ、重みを含む同じ形状の配列を返すユーザー定義関数。KDTree「ブルート」はブルートフォース検索を使用します。‘auto’は、fitメソッドに渡された値に基づいて最も適切なアルゴリズムを決定しようとします。注:スパース入力でフィッティングすると、ブルートフォースを使用してこのパラメーターの設定がオーバーライドされます。30)BallTreeまたはKDTreeに渡されるリーフサイズ。これは、ツリーの保存に必要なメモリだけでなく、構築とクエリの速度に影響を与える可能性があります。最適な値は、問題の性質によって異なります。2)ミンコフスキーメトリックのパワーパラメーター。2のeuclidean_distance(l2)を使用することと同等です。任意のpには、minkowski_distance(l_p)が使用されます。str型で指定または呼び出し可能、デフォルトは「minkowski」ツリーに使用する距離メトリック。2の場合、標準のユークリッドメトリックと同等です。使用可能なメトリックのリストについては、DistanceMetricクラスのドキュメントを参照してください。メトリックが「事前計算」されている場合、Xは距離行列と見なされ、フィット中は正方形でなければなりません。Xは用語集である場合があります。この場合、「非ゼロ」要素のみが近傍と見なされます。dict型で指定、オプション(デフォルト=なし)メトリック関数の追加のキーワード引数。None)近隣検索のために実行する並列ジョブの数。コンテキストにNoneない限り1を意味しjoblib.parallel_backendます。-1すべてのプロセッサを使用することを意味します。fitメソッドには影響しません。決定木は分類と回帰の両方で使えます。scikit-learnでモデルを作成する時に、分類と回帰では読み込むライブラリが違いますので注意してください。