机器学习入门:使用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库进行股票数据预测的机器学习任务。我们学习了数据预处理、模型选择、训练和评估等步骤。希望这篇教程能帮助你入门机器学习,并开始实践自己的项目!
**如有遇到问题可以找小编沟通交流哦。另外小编帮忙辅导大课作业,学生毕设等。不限于python,java,大数据,模型训练等。 hadoop hdfs yarn spark Django flask flink kafka flume datax sqoop seatunnel echart可视化 机器学习等 **