データマイニングアルゴリズム

KNNアルゴリズム

スーパーモデルパラメータ#パラメータ
#モデルパラメータは、モデル変数の内側に配置されている、モデルパラメータは、データを推定することができる、超パラメータモデルは、外観構成のモデルであり、パラメータの値を手動で設定しなければなりません。


クロスバリデーション#1 
:#一般的な手順は、我々は機械学習の問題解決                                                                                
#データの前処理:繰り返し削除された外れ値の処理、特徴選択、特徴変換、機能縮小                                
#データモデリングを:機械学習の問題点を二つのカテゴリーに:分類および回帰私たちは、問題に応じて右のモデルを選択          
#モデルの評価:モデルの予測結果は、評価を行い、精度、リコール、F1、PRC、の一般的に使用される指標 ROC_AUC、IOU などを。                                                                  
#クロスバリデーションは、我々のモデル評価の有効な手段です。                                                            

#我々はそれがオーバーフィットする傾向があるので、モデルを検証するためにトレーニングデータセットを使用した場合。だから、一般的に、私たちはトレーニングとテストセットに設定されたデータを置くが、これは多くの問題になります。
栗、我々は通常、シミュレーションのタイトルを訓練しないために#は、テストが通常時に元のタイトルの完全なシミュレーション、意義はそれをしない、次に何を、すべてのアウト、行われている場合は審査書類のセットは、テストにされ、設定されている
実際に本当に#そこに事のレベルが外れている、その後、タイトルのうちに行われていないか、このような状況は、オーバーフィッティングされます。しかし、問題は単純すぎるシミュレーション、試験問題は難しすぎるので、結果は満足のいくものではありません。
#私たちのモデルのために十分に真の効果を反映して、我々は、相互検証を導入しています。
基本的な考え方の#クロスバリデーションは、トレーニングセットと分類器を訓練するためにまず、検証セットの別の部分として、トレーニングセットの一部として、いくつかの意味で元のデータパケットを入れ、その後、訓練されたテストに検証セットを使用することですモデル
分類器の性能評価のためにこれを行うには#。上記のように、我々は、トレーニングセットは、10の部分に分割されている平均、たびに、テストセットとして、トレーニングセットとして残りの9、及び10回の反復、外インクリメント
、結果の平均を#10回モデルの指標として。


#KNN線形回帰との違い1 )KNNのいずれかのリターンを行い、あなたが分類を行うことができます。あなたがそう、その後、返さない場合は、ときKNN時に線形回帰を使用するには?これは、データ間の線形の関係がより明確に、そして場合ことが判明
#は、線形回帰KNNよりも良くなるデータとの間に線形の関係が明らかでない場合は、その後、KNNはより良いだろう。しかし、一般的に言えば、これら2台のマシンが最も簡単な、最も基本的なモデルを学習しています。
立ち上がり寸法は、これらの2つのモデルでは#、特にKNNは次元のいわゆる呪いである、不良の問題に直面するだろう2 線形回帰は、クラスの量に影響されない)、KNNは最高のKNNので、無次元に影響を与えました私たちは、標準化する必要があります。

#KNNアルゴリズム
#KNN(K - 最近傍)を分類および回帰のために使用することができる最も簡単な機械学習アルゴリズムの一つである、教師あり学習アルゴリズムです。
#これは、サンプルの大部分は、特徴空間における試料中の最も類似するカテゴリK(すなわち、最も近い特徴空間)に属する場合、そのサンプルは、このカテゴリに分類することができるという考えです。
すなわち#、単に最も近いいくつかのサンプルに基づいて決定サブサンプルであると決定され、所与のクラスまたはカテゴリのメソッドのカテゴリに属する

#超パラメータ
    #N_NEIGHBORS 
    #均一重み、距離
    
モデル#
    からsklearn.neighborsインポートKNeighborsRegressor、KNeighborsClassifier 

#x_train、x_test、y_train、android.permission.FACTOR。 = Train_test_split(X、Y、test_size = 0.25、random_state = 3 
#KNN = KNeighborsRegressor()
#knn.fit(x_train、y_train)




    超パラメータ調整#1 
        #グリッド検索手段GridSearchCV 
            #シナリオ:適切なハイパーパラメータを選択し
            、これは、これらのパラメータを使用して、モデルパラメータの最適な組み合わせを返し、通常使用される機械学習モデルのモデルパラメータの調整方法、である#最高のモデル与えることができるモデリングからsklearn.model_selectionインポートGridSearchCV 
    
    #パラメータ= { ' N_NEIGHBORS ':範囲(1。10、)' ウェイト':[ ' ユニフォーム'' 距離' ]} オーバーに必要な試みを定義するパラメータの組合せ
    #CLF = GridSearchCV(見積もり= KNN、param_grid =パラメータ、n_jobs = - 。1、得点= ' R2 '、CV = 5、冗長= 10 
        #スコア線形回帰又はロジスティック回帰、異なる評価基準モデルを選択します。リニア - > R2、MSEロジック- > F1、リコール、精度
        #推定評価、すなわち、モデル調整パラメータその上
        #CVはクロスバリデーション数倍
    #1 clf.fit(x_train、y_train)を
    Clf.best_score_# 
    ## clf.best_estimator_最良トレーニング良いのハイパーモデル。よく訓練されている、それらの直接の使用、もはやアップフィットしません!
    Clf.best_estimator_.predict#(x_test) 印刷(clf.best_estimator_.score(x_train、y_train)) 印刷(clf.best_estimator_.score(x_test、android.permission.FACTOR。)) 
    
    
    正規化されたデータ
        も、Aの前処理に属し、実際の#ラインインポートStandardScaler、MinMaxScaler sklearn.preprocessing 
#スケーラ = MinMaxScaler()
#x_train_sca = scaler.fit_transform(x_train)を使用したトレーニングセットとテストセットの異なる方法を。
X_test_sca# = scaler.transform(x_test)
#knn.fit(x_train_sca、y_train) 印刷(knn.score(x_train_sca、y_train)) 印刷(knn.score(x_test_sca、android.permission.FACTOR。))
    


    
#パイプラインの多くのアルゴリズムモデルは、特徴抽出、正規化、分類と一緒に組織の典型的な機械学習問題ワークフローを形成するように直列に接続することができます。:主な2つの利点をもたらす1 フィットし、パイプライン内のすべてのモデルのためのトレーニングと予測アルゴリズムへのアプローチを予測することは、直接呼び出しを。2は、検索パラメータを選択したグリッドに結合することができます。
#注:
最後の1のtansform除く#、残りのfit_transform機能の実装する必要があります変換
fit_transform変換パラメータであるので、#のカスタムfit_transform機能を実装する必要があり、クラスを変換
#値変換リターンの配列形式のnumpyののすべてのステップデータの
        
各パイプラインの#評価は、ステップ、連続的全体として実行複数のステップとして見なすことができます。
:この手順は行い、パイプライン方式によるオブジェクトを呼び出す最後の評価者を持つすべてのメソッド#パイプライン、
#フィット法ならば、前者はN-だろう - 。1人の評価者fit_transform方法を順に起動され、その後、最終的評価者のフィット呼び出しの方法
#他の場合:方法(例えば予測)を、前者はN-なります - そして1人の評価者は、メソッドが最後の評価者に順番に呼び出される変換(予測)メソッドを呼び出します。
からインポートパイプラインsklearn.pipeline 
    
#ステップ = [(' スケーラ'、MinMaxScaler())、(' KNN ' 、KNeighborsRegressor())] 
#P =パイプライン(ステップ= ステップ)
#1 p.set_params(knn__n_neighbors = 5、knn__weights = ' 距離' 
#1 p.fit(x_train、y_train) プリント(p.score(x_train、y_train)) プリント(p.score(x_test、y_test))

 

 

ナイーブベイズ

おすすめ

転載: www.cnblogs.com/654321cc/p/12115377.html