完成--线性回归示例
This commit is contained in:
commit
f2af7c49f3
64
docs/ml.md
Normal file
64
docs/ml.md
Normal 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
44
linear.py
Normal 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
BIN
output/linear.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
Loading…
Reference in New Issue
Block a user