このブログでは、ScikitのPythonでの学習について説明します。 Scikit Learnについて話す前に、機械学習の概念を理解する必要があります使用方法を知っている必要があります 。機械学習を使用すると、洞察を手動で収集する必要はありません。必要なのはアルゴリズムだけで、残りはマシンが自動的に行います。これはエキサイティングではありませんか? Scikit learnは、Pythonを使用して機械学習を実装できる魅力の1つです。それは、データ分析とマイニングを目的としたシンプルで効率的なツールを含む無料の機械学習ライブラリです。次のトピックについて説明します。これらのトピックは、今後のブログの基礎として役立ちます。
機械学習とは何ですか?
機械学習は、ソフトウェアアプリケーションがデータから学習し、人間の介入なしに結果をより正確に予測できるようにする人工知能の一種です。しかし、それはどのように起こりますか?そのためには、マシンをいくつかのデータでトレーニングする必要があり、それに基づいて、モデルを作成するためのパターンを検出します。データから知識を獲得し、強力な洞察を提供するこのプロセスは、すべて機械学習に関するものです。以下の画像を参照して、その動作をよりよく理解してください。
システムはデータを使用してアルゴリズムを学習し、それを使用して予測モデルを構築します。後で、モデルを調整するか、フィードバックデータを使用してモデルの精度を高めます。このフィードバックデータを使用して、モデルを調整し、新しいデータセットに対するアクションを予測します。私達はします話し合っている 使用事例 データをトレーニングおよびテストするアルゴリズムアプローチの1つであり、特定の問題に適しているかどうかをより正確に把握するのに役立ちます。
次に、機械学習には3つのタイプがあります。
- 教師あり学習 :これは、トレーニングデータセットから学習するアルゴリズムのプロセスです。教師あり学習では、入力変数(X)と出力変数(Y)の間にマッピング関数を生成し、アルゴリズムを使用してそれらの間に関数を生成します。これは、データを使用して予測を行うプロセスを指す予測モデリングとも呼ばれます。一部のアルゴリズムには、線形回帰、ロジスティック回帰、決定木、ランダムフォレスト、単純ベイズ分類器が含まれます。を使用して機械をトレーニングする教師あり学習のユースケースについてさらに説明します。 ロジスティック回帰 。
- 教師なし学習 :これは、ラベル付けされていない情報を使用してモデルをトレーニングするプロセスです。このプロセスを使用して、統計的特性に基づいてクラス内の入力データをクラスター化できます。教師なし学習はcとも呼ばれますオブジェクトまたはそれらの関係を説明するデータで見つかった情報に基づいてオブジェクトをグループ化することを意味する光沢分析。目標は、あるグループのオブジェクトは互いに類似しているが、別のグループのオブジェクトとは異なる必要があることです。一部のアルゴリズムには、K-meansクラスタリング、階層的クラスタリングなどが含まれます。
- 強化学習: 強化学習とは、空間や環境と相互作用することによって学習することです。RLエージェントは、明示的に教えられるのではなく、その行動の結果から学びます。それは、過去の経験(搾取)と新しい選択(探求)に基づいて行動を選択します。
- 教師あり学習 :これは、トレーニングデータセットから学習するアルゴリズムのプロセスです。教師あり学習では、入力変数(X)と出力変数(Y)の間にマッピング関数を生成し、アルゴリズムを使用してそれらの間に関数を生成します。これは、データを使用して予測を行うプロセスを指す予測モデリングとも呼ばれます。一部のアルゴリズムには、線形回帰、ロジスティック回帰、決定木、ランダムフォレスト、単純ベイズ分類器が含まれます。を使用して機械をトレーニングする教師あり学習のユースケースについてさらに説明します。 ロジスティック回帰 。
ScikitLearnの概要
Scikit learnは、Pythonで機械学習を実行するために使用されるライブラリです。 Scikit learnは、BSDでライセンスされているオープンソースライブラリであり、さまざまなコンテキストで再利用可能であり、学術的および商用利用を促進します。 Pythonで、教師あり学習アルゴリズムと教師なし学習アルゴリズムの範囲を提供します。Scikit learnは、一般的なアルゴリズムとライブラリで構成されています。それとは別に、次のパッケージも含まれています。
- NumPy
- Matplotlib
- SciPy(Scientific Python)
Scikit learnを実装するには、最初に上記のパッケージをインポートする必要があります。これらのライブラリに精通していない場合は、私の以前のブログをご覧ください。 そして 。これらの2つのパッケージは、コマンドラインを使用するか、Pを使用している場合にダウンロードできます。Yチャーム、他のパッケージの場合と同じように設定に移動して、直接インストールできます。
次に、同様の方法で、Sklearnをインポートする必要があります。Scikit learnは、Scikit-learnを使用する前にインストールする必要があるSciPy(Scientific Python)に基づいて構築されています。あなたはこれを参照することができます ウェブサイト 同じものをダウンロードします。また、Scipyとホイールパッケージが存在しない場合はインストールします。次のコマンドを入力できます。
pip install scipy
私はすでにそれをダウンロードしてインストールしました、あなたはどんな混乱のために以下のスクリーンショットを参照することができます。
上記のライブラリをインポートした後、Scikitlearnがどのように使用されているかを深く掘り下げて理解しましょう。
Scikit learnには、次のようなサンプルデータセットが付属しています 虹彩 そして 数字 。データセットをインポートして、いろいろと試すことができます。その後、Support VectorMachineの略であるSVMをインポートする必要があります。 SVMは、データの分析に使用される機械学習の形式です。
グーグルデータサイエンティストのインタビューの質問
例を見てみましょう 数字 データセットとそれは私たちのために番号を分類します、例えば-0 1 2 3 4 5 6 7 89.以下のコードを参照してください:
matplotlib.pyplotをsklearnからpltとしてインポートします。sklearnからデータセットをインポートします。importsvmdigits.load_digits()print(digits.data)
出力–
[[0. 0. 5. ...、0。0. 0.] [0. 0. 0. ...、10。0. 0.] [0. 0. 0. ...、16。 9. 0.] ...、[0。0。1. ...、6。0。0.] [0. 0. 2. ...、12。0. 0.] [0.0。 10. ...、12。1.0。]]
ここでは、ライブラリ、SVM、データセットをインポートし、データを印刷しました。これは、データが保存される桁データの長い配列です。それは分類するために使用できる機能へのアクセスを提供します 数字 サンプル。次に、ターゲット、画像などの他の操作を試すこともできます。以下の例を検討してください。
matplotlib.pyplotをsklearnからpltとしてインポートします。sklearnからデータセットをインポートします。importsvmdigits.load_digits()print(digits.target)print(digits.images [0])
出力 -
[0 1 2 ...、8 9 8] //データのターゲット[[0.0。5. 13. 9. 1. 0. 0。] //データの画像[0.0.13。 15. 10. 15. 5. 0.] [0. 3. 15. 2. 0. 11. 8. 0.] [0. 4. 12. 0. 0. 8. 8. 0。] [0。 5. 8. 0. 0. 9. 8. 0.] [0. 4. 11. 0. 1. 12. 7. 0.] [0. 2. 14. 5. 10. 12. 0.0。 ] [0. 0. 6. 13. 10. 0. 0.0。]]
上記のように、ターゲットの数字と数字の画像が印刷されます。 Digits.target のグラウンドトゥルースを与える 桁 データセット、つまり各桁の画像に対応する番号。次に、データは常に形状(n_samples、n_features)を持つ2D配列ですが、元のデータは異なる形状である可能性があります。ただし、数字の場合、元の各サンプルは形状(8,8)の画像であり、を使用してアクセスできます。 数字 。 画像。
学習と予測
次に、Scikit learnでは、データセット(10の可能なクラスのサンプル、0から9までの数字)を使用しており、画像が与えられたときに数字を予測する必要があります。クラスを予測するには、 推定量 これは、見えないサンプルが属するクラスを予測するのに役立ちます。 Scikit learnには、メソッドを実装するPythonオブジェクトである分類の推定量があります。 fit(x、y) そして 予測(T)。 以下の例を考えてみましょう。
sklearnからpltとしてmatplotlib.pyplotをインポートしますsklearnからデータセットをインポートしますimportsvm Digits = Datasets.load_digits()//データセットclf = svm.SVC(gamma = 0.001、C = 100)print(len(digits.data))x、y = Digits.data [:-1]、digits.target [:-1] //データをトレーニングしますclf.fit(x、y)print( 'Prediction:'、clf.predict(digits.data [-1]) )//データを予測するplt.imshow(digits.images [-1]、cmap = plt.cm.gray_r、interpolation = 'nearest')plt.show()
出力–
1796年
予測:[8]
上記の例では、最初に長さを見つけ、1796の例をロードしました。次に、このデータを学習データとして使用しました。ここで、最後の要素と最初の負の要素をテストする必要があります。また、マシンが正しいデータを予測したかどうかを確認する必要があります。そのために、数字の画像を表示したMatplotlibを使用しました。結論として、数字データがあり、ターゲットを取得し、それを適合させて予測しているので、準備は完了です。本当に速くて簡単ですよね?
以下のコードを参照するだけで、ターゲットラベルを画像で視覚化することもできます。
import matplotlib.pyplot as plt from sklearn import dataset from sklearn import svm Digits = Datasets.load_digits()#画像とターゲットラベルをリストに結合しますimages_and_labels = list(zip(digits.images、digits.target))#すべての要素に対してインデックスのリストで、(image、label)in enumerate(images_and_labels [:8]):#i + 1番目の位置で2X4のサブプロットを初期化しますplt.subplot(2、4、index + 1)#画像を表示しますすべてのサブプロットでplt.imshow(image、cmap = plt.cm.gray_r、interpolation = 'nearest')#各サブプロットにタイトルを追加しますplt.title( 'Training:' + str(label))#プロットpltを表示します。公演()
出力-
上記のコードでわかるように、「zip」関数を使用して画像とターゲットラベルをリストに結合し、それを変数(images_and_labelsなど)に保存しました。その後、各位置で2 x4のグリッドの最初の8つの要素にインデックスを付けました。その後、Matplotlibを使用して画像を表示し、「トレーニング」というタイトルを追加しました。
使用事例 - ロジスティック回帰を使用した予測
問題文 - 自動車会社が新しいSUVを市場にリリースしました。 SUVの販売に関する以前のデータを使用して、これを購入することに興味があるかもしれない人々のカテゴリーを予測したいと考えています。
このために、私が持っているデータセットを見てみましょう UserId、性別、年齢、推定給与、購入済み 列として。これは単なるサンプルデータセットであり、データセット全体をからダウンロードできます。 ここに 。 pyCharmにデータをインポートすると、次のようになります。
プロジェクト管理における調達とは
では、このデータを理解しましょう。 上記のデータセットでわかるように、id、性別、年齢などのカテゴリがあります。これらのカテゴリに基づいて、マシンをトレーニングし、いいえを予測します。購入の。だからここに、 独立変数 「年齢」、「期待給与」、 従属変数 「購入済み」として。次に、教師あり学習を適用します。 ロジスティック回帰アルゴリズム 既存のデータを使用して購入数を確認します。
まず、ロジスティック回帰の概要を見てみましょう。
ロジスティック回帰 –ロジスティック回帰は、カテゴリ従属変数の結果を予測するために使用されるバイナリ形式で結果を生成します。これは、従属変数がバイナリである場合に最も広く使用されます。つまり、利用可能なカテゴリの数が2つである場合、たとえば、ロジスティック回帰の通常の出力は次のとおりです。
- はいといいえ
- 真と偽
- 高低
- 合格と不合格
コードから始めるために、まずこれらのライブラリ(Numpy、Matplotlib、Pandas)をインポートします。以下の手順に従って、Pycharmにパンダをインポートするのは非常に簡単です。
オーバーロードとオーバーライドの違いは何ですか
設定->パッケージの追加->パンダ->インストール
この後、データセットをインポートし、従属変数(購入済み)と独立変数(年齢、給与)を次のように分離します。
データセット= pd.read_csv( 'Social_Network_Ads.csv')X = dataset.iloc [:、[2,3]]。valuesy = dataset.iloc [:、4] .valuesprint(X)print(y)
次のステップは、データのトレーニングとテストです。一般的な戦略は、ラベル付けされたすべてのデータを取得し、トレーニングサブセットとテストサブセットに分割することです。これは通常、トレーニングサブセットでは70〜80%、テストサブセットでは20〜30%の比率で取得されます。したがって、cross_validationを使用してcreate Training andTestingセットを作成しました。
sklearn.cross_validationからimporttrain_test_split X_train、X_test、y_train、y_test = train_test_split(X、y、test_size = 0.25、random_state = 0)
以下に示すように、StandarScalerを使用して、パフォーマンスを向上させるために入力値をスケーリングすることもできます。
sklearn.preprocessingからインポートStandardScalersc = StandardScaler()X_train = sc.fit_transform(X_train)X_test = sc.transform(X_test)
次に、ロジスティック回帰モデルを作成します。
from sklearn.linear_model import LogisticRegression classifier = LogisticRegression(random_state = 0)classifier.fit(X_train、y_train)
これを使用して、テストセットの結果を予測できます。
y_pred = classifier.predict(X_test)
これで、正確な予測の数と使用しなかった予測の数を確認できます。 混同行列 。 Yを正のインスタンス、Nを負のインスタンスとして定義しましょう。以下に示すように、4つの結果は2 * 2混同行列で定式化されます。
sklearn.metricsからimportconfusion_matrix cm = confusion_matrix(y_test、y_pred)print(cm)
出力-
[[65 3] [8 24]]
次に、混同行列に基づいて、精度を計算できます。したがって、上記の例では、精度は次のようになります。
= TP + TN / FN + FP
= 65 + 24/65 + 3+ 8 + 24
= 89%
これは手動で行いました。次に、以下に示すように、精度を計算して出力する組み込み関数「accuracy_score」があるため、マシンが同じものをどのように計算するかを見てみましょう。
fromsklearn.metricsインポートaccuracy_score //関数accuracy_scoreをインポートprint(accuracy_score(y_test、y_pred)* 100)//精度を出力
出力–
89.0
やあ!したがって、89%の精度でScikitlearnを使用してロジスティック回帰を実装することに成功しました。
ここをクリック 上記の予測の完全なソースを取得するには PythonScikit学習ライブラリを使用します。
これで、Pythonが提供しなければならない多くの一般的なアルゴリズムの1つだけをカバーしました。Scikitのすべての基本をカバーしてライブラリを学びます。だからあなたは今練習を始めることができます。練習すればするほど、学ぶことができます。今後のPythonチュートリアルブログにご期待ください!
質問がありますか?この「Scikitlearn」ブログのコメントセクションにその旨を記載してください。できるだけ早くご連絡いたします。 Pythonとそのさまざまなアプリケーションについての深い知識を得るには、次のことができます。 24時間年中無休のサポートと生涯アクセスを備えたライブオンライントレーニング用。