机器学习入门:使用Scikit-learn进行实践
机器学习是人工智能的一个重要分支,它使计算机具备了从数据中学习和改进性能的能力,而不需要明确的编程。在这个教程中,我们将介绍如何使用Python中的Scikit-learn库进行机器学习任务。
什么是Scikit-learn?
Scikit-learn(简称Sklearn)是一个用于机器学习任务的Python库,它包含了许多用于分类、回归、聚类、降维和模型选择的工具。它建立在NumPy、SciPy和Matplotlib之上,为机器学习的实验提供了一个简单而高效的解决方案。
安装Scikit-learn
首先,确保你已经安装了Python和pip。然后可以使用以下命令来安装Scikit-learn:
pip install scikit-learn
机器学习流程
机器学习的一般流程如下:
数据收集:收集并准备数据集,确保数据质量。
数据预处理:对数据进行清洗、缺失值处理、特征选择、特征缩放等操作。
模型选择:选择合适的模型用于解决特定的问题。
模型训练:使用训练数据来训练模型。
模型评估:使用测试数据评估模型的性能。
1. 数据准备
首先,我们需要准备数据。我们采集了一份儿股票数据存入mysql 首先需要从mysql加载数据。
import pandas as pd import mysql.connector # 连接到 MySQL conn = mysql.connector.connect( host="localhost", user="root", password="12456", database="mydb" ) def get_data_from_mysql(): # 查询数据 query = "SELECT * FROM re_stock_code_price" # 将数据加载到 DataFrame 中 df = pd.read_sql(query, conn) # 关闭 MySQL 连接 conn.close() return df
2. 数据预处理
在数据预处理阶段,我们需要处理缺失值、标准化特征等。Scikit-learn提供了许多内置的工具来帮助我们完成这些任务。
def data_prepare(df): # 删除不相关的列如 'id', 'code', 'name', 'create_time' df = df.drop(columns=['id', 'code', 'name', 'create_time']) # 处理缺失值 df.dropna(inplace=True) # 将数据分为特征和目标变量 X = df.drop(columns=['rise']) # 特征 y = df['rise'] # 目标变量 # 对目标变量进行二元分类处理,1代表涨,0代表跌 y_binary = (y == 1).astype(int) # 数据预处理:标准化 scaler = StandardScaler() X_scaled = scaler.fit_transform(X)
3. 拆分数据集
将数据集拆分为训练集和测试集,用于模型训练和评估。
# 将数据分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X_scaled, y_binary, test_size=0.2, random_state=42) return X_train, X_test, y_train, y_test
4. 选择模型
选择一个适当的模型用于解决我们的问题。Scikit-learn提供了许多常用的机器学习模型,如线性回归、逻辑回归、决策树、随机森林等。线性回归刚好可以满足我们预测股票涨跌的二分类问题。
from sklearn.linear_model import LinearRegression # 初始化线性回归模型 linear_model = LinearRegression()
5. 模型训练
使用训练数据来训练模型。
def model_train_linner(X_train, X_test, y_train, y_test): # 初始化线性回归模型 linear_model = LinearRegression() # 训练线性回归模型 linear_model.fit(X_train, y_train) # 预测 y_pred_linear = linear_model.predict(X_test)
- 模型评估
使用测试数据评估模型的性能。
python Copy code from sklearn.metrics import accuracy_score, classification_report y_pred = model.predict(X_test)
评估模型
# 将线# 将线性回归预测值转化为二元类别(0或1) y_pred_linear_binary = (y_pred_linear > 0.5).astype(int) # 计算准确率 accuracy_linear = accuracy_score(y_test, y_pred_linear_binary) print("线性回归模型准确率:", accuracy_linear) plt.figure(figsize=(10, 5)) plt.scatter(y_test, y_pred_linear, color='green') plt.plot([min(y_test), max(y_test)], [min(y_test), max(y_test)], '--', color='red') plt.title('LinearRegression') plt.xlabel('Real') plt.ylabel('Estimate') plt.show()
结论
这篇教程介绍了如何使用Scikit-learn库进行股票数据预测的机器学习任务。我们学习了数据预处理、模型选择、训练和评估等步骤。希望这篇教程能帮助你入门机器学习,并开始实践自己的项目!