Maison >développement back-end >Tutoriel Python >Comment utiliser la bibliothèque d'apprentissage automatique scikit-learn en Python.
scikit-learn est l'une des bibliothèques d'apprentissage automatique les plus populaires en Python. Elle fournit une variété d'algorithmes et d'outils d'apprentissage automatique, notamment la classification, la régression, le clustering, la réduction de dimensionnalité, etc.
Les avantages de scikit-learn sont :
Facile à utiliser : L'interface de scikit-learn est simple et facile à comprendre, permettant aux utilisateurs de se lancer facilement dans l'apprentissage automatique. API unifiée : L'API de scikit-learn est très unifiée et les méthodes d'utilisation des différents algorithmes sont fondamentalement les mêmes, ce qui rend l'apprentissage et l'utilisation plus pratiques.
Implémente un grand nombre d'algorithmes d'apprentissage automatique : scikit-learn implémente divers algorithmes d'apprentissage automatique classiques et fournit une multitude d'outils et de fonctions, facilitant le débogage et l'optimisation des algorithmes.
Open source et gratuit : scikit-learn est entièrement open source et gratuit, tout le monde peut utiliser et modifier son code.
Efficace et stable : scikit-learn implémente divers algorithmes d'apprentissage automatique efficaces, peut gérer des ensembles de données à grande échelle et fonctionne bien en termes de stabilité et de fiabilité. scikit-learn est très adapté à l'apprentissage automatique d'entrée de gamme car l'API est très unifiée et le modèle est relativement simple. Ma recommandation ici est d'étudier en conjonction avec la documentation officielle, qui présente non seulement le champ d'application de chaque modèle, mais fournit également des exemples de code.
Le modèle de régression linéaire est un modèle basé sur la régression linéaire, adapté à la résolution de problèmes de prédiction de variables continues. L'idée de base de ce modèle est d'établir une équation linéaire, de modéliser la relation entre la variable indépendante et la variable dépendante sous forme de ligne droite et d'utiliser les données d'entraînement pour ajuster la ligne droite afin de trouver les coefficients de l'équation linéaire, puis utilisez cette équation pour tester les données à des fins de prédiction.
Le modèle de régression linéaire convient aux problèmes où il existe une relation linéaire entre les variables indépendantes et les variables dépendantes, telles que la prévision du prix de l'immobilier, la prévision des ventes, la prévision du comportement des utilisateurs, etc. Bien entendu, lorsque la relation entre la variable indépendante et la variable dépendante est non linéaire, les performances du modèle LinearRegression seront médiocres. À l'heure actuelle, la régression polynomiale, la régression de crête, la régression Lasso et d'autres méthodes peuvent être utilisées pour résoudre le problème.
Après avoir mis de côté l'influence d'autres facteurs, il existe une certaine relation linéaire entre le temps d'apprentissage et la performance d'apprentissage. Bien entendu, le temps d'apprentissage fait ici référence au temps d'apprentissage effectif, qui s'exprime sous forme de performance. augmente avec le temps d’apprentissage. Nous préparons donc un ensemble de données sur le temps d'étude et les notes. Certaines données de l'ensemble de données sont les suivantes :
Temps d'apprentissage, scores
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
pour déterminer les caractéristiques et les objectifs
Entre le temps d'apprentissage et les notes, le temps d'apprentissage est la caractéristique, qui est la variable indépendante, est l'étiquette, qui est la variable dépendante ; nous devons donc nous préparer à l'apprentissage. Les caractéristiques et les étiquettes sont extraites des ensembles de données de temps et de notes.
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['分数']
Divisez l'ensemble d'entraînement et l'ensemble de test
Une fois les données de caractéristiques et d'étiquettes préparées, utilisez la régression linéaire de scikit-learn pour l'entraînement et divisez l'ensemble de données en un ensemble d'entraînement et un ensemble de test.
""" 将特征数据和目标数据划分为测试集和训练集 通过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)
Choisissez un modèle et ajustez les données
Après avoir préparé l'ensemble de test et l'ensemble d'entraînement, nous pouvons choisir un modèle approprié pour s'adapter à l'ensemble d'entraînement afin de pouvoir prédire les cibles correspondant à d'autres fonctionnalités
# 选择模型,选择模型为LinearRegression model = LinearRegression() # Scikit-learn中,机器学习模型的输入必须是一个二维数组。我们需要将一维数组转换为二维数组,才能在模型中使用。 x_train = X_train.values.reshape(-1, 1) # 进行拟合 model.fit(x_train, Y_train)
obtenir les paramètres du modèle
Étant donné que l'ensemble de données ne contient que deux temps d'apprentissage et deux notes, il s'agit d'un modèle linéaire très simple. La formule mathématique sous-jacente est y=ax+b, où la variable dépendante y est les notes et la variable indépendante x est le temps d'apprentissage. .
""" 输出模型关键参数 Intercept: 截距 即b Coefficients: 变量权重 即a """ print('Intercept:', model.intercept_) print('Coefficients:', model.coef_)
Backtest
Le modèle d'ajustement ci-dessus utilise uniquement les données de l'ensemble de test. Ensuite, nous devons utiliser les données de l'ensemble de test pour effectuer un backtest sur l'ajustement du modèle. Après avoir utilisé l'ensemble d'entraînement pour l'ajustement, nous pouvons ensuite l'ajuster. l'ensemble de tests de fonctionnalités Faites des prédictions et comparez les résultats de prédiction cible obtenus avec les valeurs cibles réelles, nous pouvons obtenir le degré d'ajustement du modèle.
# 转换为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))
Résultats de l'exécution du programme
Selon le code ci-dessus, nous devons déterminer le degré d'ajustement du modèle de régression linéaire, c'est-à-dire si les données sont adaptées à un ajustement avec un modèle linéaire. Les résultats de l'exécution du programme sont. comme suit :
Résultats de prédiction :
[47.43726068 33.05457106 49.83437561 63.41802692 41.84399249 37.84880093
23.46611131 7.84880093 26.662 26456 71.40841004 18.67188144 88.9872529 63.41802692 42.6430308 21.86803469 69.81033341 66.61418017 33.054 57106 58. 62379705 50.63341392 18.67188144 41.04495418 20.26995807 77.80071653
28.26034119 13.87765157 61.81995029 90.58 532953 77. 80071653 36.25072431
84.19302303]
R2 : 0.8935675710322939
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!