ホームページ  >  記事  >  バックエンド開発  >  Python で scikit-learn 機械学習ライブラリを使用する方法。

Python で scikit-learn 機械学習ライブラリを使用する方法。

PHPz
PHPz転載
2023-04-22 22:31:111840ブラウズ

はじめに

scikit-learn は、Python で最も人気のある機械学習ライブラリの 1 つで、分類、回帰、クラスタリング、次元削減などのさまざまな機械学習アルゴリズムとツールを提供します。

scikit-learn の利点は次のとおりです:

  • 使いやすい: scikit-learn のインターフェイスはシンプルで理解しやすいため、ユーザーは簡単に使い始めることができます。機械学習。統一された API: scikit-learn の API は非常に統一されており、さまざまなアルゴリズムの使用方法は基本的に同じであるため、学習と使用がより便利になります。

  • 多数の機械学習アルゴリズムの実装: scikit-learn は、さまざまな古典的な機械学習アルゴリズムを実装し、豊富なツールと機能を提供して、アルゴリズムのデバッグと最適化をより便利にします。

  • オープンソースで無料: scikit-learn は完全にオープンソースで無料であり、誰でもそのコードを使用および変更できます。

  • 効率的で安定した: scikit-learn は、さまざまな効率的な機械学習アルゴリズムを実装し、大規模なデータセットを処理でき、安定性と信頼性の点で優れたパフォーマンスを発揮します。 scikit-learn は、API が非常に統合されており、モデルが比較的シンプルであるため、初心者レベルの機械学習に非常に適しています。ここでのお勧めは、各モデルの適用範囲を紹介するだけでなく、コードサンプルも提供されている公式ドキュメントと合わせて学習することです。

線形回帰モデル - LinearRegression

LinearRegression モデルは、線形回帰に基づくモデルであり、連続変数の予測問題を解くのに適しています。このモデルの基本的な考え方は、線形方程式を確立し、独立変数と従属変数の間の関係を直線としてモデル化し、トレーニング データを使用して直線をフィッティングして線形方程式の係数を見つけることです。次に、この方程式を使用して、予測用のデータをテストします。

線形回帰モデルは、住宅価格予測、売上予測、ユーザー行動予測など、独立変数と従属変数の間に線形関係がある問題に適しています。もちろん、独立変数と従属変数の間の関係が非線形の場合、LinearRegression モデルのパフォーマンスは低下します。このとき、多項式回帰、リッジ回帰、ラッソ回帰などの手法を使用して問題を解決できます。

データセットの準備

他の要因の影響を脇に置いた後、学習時間と学習パフォーマンスの間には一定の線形関係があります。もちろん、ここでの学習時間は効果的な学習を指します。時間、成績 勉強時間が増えると成績も上がります。そこで、学習時間と成績のデータセットを用意します。データセット内のデータの一部は次のとおりです:

学習時間、スコア
0.5,15
0.75,23
1.0,14
1.25,42
1.5,21
1.75,28
1.75,35
2.0,51
2.25,61
2.5,49

線形回帰を使用する

特徴量の合計を決定する 目標

学習時間と成績の間では、学習時間は独立変数である特徴であり、成績は従属変数であるラベルであるため、特徴量と成績を抽出する必要があります。準備された学習時間と成績のデータセットからラベルを取得します。

import pandas as pd
import numpy as np
from sklearn.metrics import r2_score, mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# 读取学习时间和成绩CSV数据文件
data = pd.read_csv('data/study_time_score.csv')
# 提取数据特征学习时间
X = data['学习时间']
# 提取数据目标(标签)分数
Y = data['分数']

トレーニング セットとテスト セットを分割する

特徴データとラベル データが準備できたら、scikit-learn の LinearRegression をトレーニングに使用し、データ セットをトレーニング セットとテスト セットに分割します。 。

"""
将特征数据和目标数据划分为测试集和训练集
通过test_size=0.25将百分之二十五的数据划分为测试集
"""
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.25, random_state=0)
x_train = X_train.values.reshape(-1, 1)
model.fit(x_train, Y_train)

モデルを選択してデータを当てはめる

テスト セットとトレーニング セットを準備した後、トレーニング セットに適合する適切なモデルを選択できるため、他のターゲットに対応するターゲットを予測できます。機能

# 选择模型,选择模型为LinearRegression
model = LinearRegression()
# Scikit-learn中,机器学习模型的输入必须是一个二维数组。我们需要将一维数组转换为二维数组,才能在模型中使用。
x_train = X_train.values.reshape(-1, 1)
# 进行拟合
model.fit(x_train, Y_train)

モデル パラメーターの取得

データ セットには 2 つの学習時間と成績のみが含まれているため、非常に単純な線形モデルであり、その背後にある数式は y=ax b です。 , ここで、y 従属変数は成績、x 独立変数は学習時間です。

"""
输出模型关键参数
Intercept: 截距 即b
Coefficients: 变量权重 即a
"""
print('Intercept:', model.intercept_)
print('Coefficients:', model.coef_)

バックテスト

上記のフィッティング モデルでは、テスト セット データのみが使用されています。次に、テスト セット データを使用して、モデルのフィッティングに関するバックテストを実行する必要があります。トレーニングを使用した後、に設定すると、特徴テストセットを予測でき、得られたターゲット予測結果と実際のターゲット値を比較することで、モデルの適合度を取得できます。

# 转换为n行1列的二维数组
x_test = X_test.values.reshape(-1, 1)
# 在测试集上进行预测并计算评分
Y_pred = model.predict(x_test)
# 打印测试特征数据
print(x_test)
# 打印特征数据对应的预测结果
print(Y_pred)
# 将预测结果与原特征数据对应的实际目标值进行比较,从而获得模型拟合度
# R2 (R-squared):模型拟合优度,取值范围在0~1之间,越接近1表示模型越好的拟合了数据。
print("R2:", r2_score(Y_test, Y_pred))
  • プログラムの実行結果

  • 上記のコードに従って、LinearRegression モデルの適合度を判断する必要があります。つまり、データが適切かどうか。フィッティングには線形モデルを使用します。プログラムの実行結果は次のとおりです。

##予測結果:

[47.43726068 33.05457106 49.83437561 63.41802692 41.84399249 37.84880093
23.46611131 37. 84880093 26.66226456 71.40841004 18.67188144 88.9872529
63.41802692 42.6430308 21.86803469 6 9.81033341 66.61418017 33.05457106
58.62379705 50.63341392 18.67188144 41.044954 0 .8935675710322939

以上がPython で scikit-learn 機械学習ライブラリを使用する方法。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。