完成--线性回归示例

This commit is contained in:
haotian 2025-02-05 11:29:05 +08:00
commit f2af7c49f3
3 changed files with 108 additions and 0 deletions

64
docs/ml.md Normal file
View File

@ -0,0 +1,64 @@
深度学习与机器学习分类
1.监督学习:
分类:将输入数据分配到预定义的类别中,如图像分类,文本分类
回归:预测连续值,如房价预测,股票价格预测.
2.无监督学习:
聚类:将数据分组,如客户细分,图像分割.
降维:减少数据维度,如PCA,t-SNE
3.半监督学习:结合少量标注数据和大量未标注数据进行训练.
4.强化学习:通过与环境交互学习策略,如游戏AI,机器人控制.
5.生成模型:
生成对抗网络(GANS):生成逼真数据,如图像生成,视频生成.
扩散模型:同上
自编码器:学习数据表示,用于数据压缩,去噪.
机器学习主要算法
1.监督学习算法
1.线性回归:用于回归任务,通过线性方程预测连续值.
2.逻辑回归:用于分类任务,通过逻辑函数预测类别概率
3.支持向量机(SVM):用于分类和回归,通过找到最优超平面分离数据.
4.决策树:用于分类和回归,通过树结构进行决策.
5.随机森林:集成学习方法,通过多个决策树提高性能.
6.K近邻(KNN):基于距离度量,通过最近邻样本进行预测.
7.朴素贝叶斯:基于贝叶斯定理,适用于文本分类等任务.
8.AdaBoost:集成学习算法,通过加权多个若分类器提高性能.
9.梯度提升树(GBM):通过逐步优化残差进行预测.
10.XGBoost:GBM的高效实现.
11.LightGBM:另一种高效的GBM实现,适用于大规模数据.
2.无监督学习
1.K均值聚类
2.层次聚类:
3.主成分分析(PCA):用于降维,通过线性变换保留主要特征
4.t-SNE:用于高维数据可视化,保留局部结构.
5.自组织映射(SOM):通过神经网络进行数据降维和可视化.
6.高斯混合模型(GMM):通过多个高斯分布拟合数据.
机器学习算法具体介绍
1.线性回归: 用于建模输入变量(自变量)与输出变量(因变量)之间线性关系的统计方法.
原理:
y=β0+β1x1+β2x2+⋯+βnxn
ϵ误差项,表示模型未能解释的部分
目标: 最小化误差项的平方和(最小二乘法)来估计系数
L(β)=i=1∑m(yi(β0+β1xi1+β2xi2+⋯+βnxin))2
适用场景:
1.连续值预测:
房价预测
股票价格预测
销售额预测:根据广告投入,市场条件等预测销售额.
2.因果关系分析:
经济学:分析政策变化对经济指标的影响.
医学:研究药物剂量对治疗效果的影响.
3.简单建模:
初步分析:在复杂模型之前,使用线性回归进行初步数据分析.
解释性模型:模型回归模型易于解释,适合需要透明度的场景
优缺点:
优点:
简单易懂:模型结构简单,易于理解和实现。
计算高效:训练和预测速度快,适用于大规模数据。
解释性强:系数直接反映自变量对因变量的影响。
缺点:
线性假设:假设自变量和因变量之间存在线性关系,可能不适用于非线性数据。
对异常值敏感:异常值可能对模型产生较大影响。
多重共线性:自变量之间高度相关时,模型表现可能不佳。

44
linear.py Normal file
View File

@ -0,0 +1,44 @@
'''
线性回归
'''
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 生成示例数据
# 假设我们有一些数据点 (X, y),其中 X 是输入特征y 是目标变量
# 设置随机种子, 不然每次运行程序结果都不一样
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
# 将数据分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建线性回归模型
model = LinearRegression()
# 训练模型
model.fit(X_train, y_train)
# 使用模型进行预测
y_pred = model.predict(X_test)
# 评估模型
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"Mean Squared Error: {mse}")
print(f"R^2 Score: {r2}")
# 可视化结果
plt.scatter(X_test, y_test, color='black', label='Actual data')
plt.plot(X_test, y_pred, color='blue', linewidth=3, label='Fitted line')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.savefig('./output/linear.png')

BIN
output/linear.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB