机器学习——回归分析和线性回归

一、机器学习

1.1机器学习的概念
  • 从数据中寻找规律、建立关系,根据建立的关系去解决问题
1.2机器学习的学习框架
  • 训练数据x,y 自动求解x,y的关系 新数据预测
1.3机器学习的四大学习方法类别
1.31监督学习
  • 有正确的标签
  • 价格预测,图像识别,语言翻译
  • 线性回归,逻辑回归,决策树,朴素贝叶斯,KNN
1.32无监督学习
  • 没有正确的标签
  • 客户划分,新闻聚类,数据降维
  • 聚类算法,PCA降维,异常检测
1.33半监督学习
  • 有少量正确标签
  • 混合学习应用
1.34强化学习
  • 建立奖惩机制
  • OpenAi Five ,AiphaGo
1.35场景
  • 任务复杂、采集大量数据有难度
  • 解决办法:大部分场景都需要监督学习,条件允许的情况下尽可能收集足够的样本,无法收集足够样本的条件下,考虑标签样本+无标签样本实现监督学习与无监督学习的结合,即半监督学习
  • 大部分应用场景中,条件允许的情况下,优先考虑监督学习;
  • 部分特定的场景,无监督学习能够帮我们找到“惊喜”(预料之外的数据关系)
  • 未来的一大方向:监督+无监督,实现少量标签样本下的数据学习,在保证精度的同时极大降低数据采集难度

二、线性回归

2.1损失函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2梯度下降法
  • 寻找函数极小值的一种方法
  • 计算开始点Xi对应梯度,以一定步长向梯度反方向到达新的点Xi+1,重复此过程,直到Xi,Xi+1几乎不再发生变化
  • 在这里插入图片描述
    在这里插入图片描述
2.3线性回归流程

在这里插入图片描述

三.Scikit-learn

3.1Scikit-learn介绍
  • 针对机器学习应用而开发的算法库
  • 数据预处理、分类、回归、降维、模型选择等常用的机器学习算法
  • 丰富的算法模块、易于安装与使用、样例丰富、教程文档详细
  • //https://scikit-learn.org/stable/index.html

四.任务

4.1基于数据,建立单因子线性回模型,预测面积100平方米的房子售价100万是否值得投资

在这里插入图片描述

import pandas as pd
import numpy as np

data=pd.read_csv("data_hp.csv")
data.head()

# 数据预处理
from matplotlib import pyplot as plt
fig1=plt.figure()

# x,y赋值
x=data.loc[:,'面积']
y=data.loc[:,'房价']

#数据格式化
x=np.array(x)
x=np.array(x).reshape((len(x),1))
y=np.array(y)
y=np.array(y).reshape((len(y),1))

plt.scatter(x,y)
plt.xlabel("size(x)")
plt.ylabel("price(y)")
plt.show()

#模型建立及训练
from sklearn.linear_model import LinearRegression
model=LinearRegression()

#模型训练
model.fit(x,y)

#获取线性回归模型系数
a=model.coef_
b=model.intercept_
print(a,b,"y=f(x)={}*x+{}".format(a[0][0],b[0]))

#结果预测
x=100
y_predict=a[0][0]*x+b[0]
print(y_predict)

#第二种预测方法
X_test=np.array([[100]])
y_predict2=model.predict(X_test)
print(y_predict2)

#模型评估
from sklearn.metrics import mean_sqared_error,r2_score
MSE=mean_sqared_error(y,y_predict)
R2=r2_score(y,y_predict)
print(MSE,R2)
#MSE越小越好,R2越接近1越好

#预测结果可视化
from matplotlib import pyplot as plt
fig1=plt.figure()
plt.scatter(x,y,label="y_real")
plt.plot(x,y_predict,label="y_predict")
plt.xlabel("size(x)")
plt.ylabel("price(y)")
plt.legend()
plt.show()


4.2基于数据,建立多因子线性回模型,与只使用因子X1进行建模预测的结果进行对比
  • 以面积为输入变量,建立单因子模型,评估模型表现,可视化线性回归预测结果
  • 以面积、人均收入、平均房龄为输入变量,建立多因子模型,评估模型表现
  • 预测面积=160,人均收入=70000,平均房龄=5的合理房价
  • 在这里插入图片描述
# In[]
import numpy as np
import pandas as pd

data2=pd.read_csv("data2_hp.csv")



# In[]
from matplotlib import pyplot as plt
fig=plt.figure(figsize=(20,5))
fig1=plt.subplot(131)
plt.scatter(data2.loc[:,'面积'],data2.loc[:,'价格'])
plt.title('Price VS Size')
plt.show()


fig2=plt.subplot(131)
plt.scatter(data2.loc[:,'人均收入'],data2.loc[:,'价格'])
plt.title('Price VS Income')
plt.show()

fig3=plt.subplot(131)
plt.scatter(data2.loc[:,'平均房龄'],data2.loc[:,'价格'])
plt.title('Price VS House_age')
plt.show()
# In[]
x=data2.loc[:,'面积']
y=data2.loc[:,'价格']

x=np.array(x).reshape(-1,1)
y=np.array(y).reshape(-1,1)

# In[]
plt.scatter(x,y)
plt.xlabel("size(x)")
plt.ylabel("price(y)")
plt.show()

# In[]
from sklearn.linear_model import LinearRegression
model=LinearRegression()

model.fit(x,y)

# In[]
y_predict=model.predict(x)
print(y_predict)

# In[]
from sklearn.metrics import mean_squared_error,r2_score
MSE=mean_squared_error(y,y_predict)
R2=r2_score(y, y_predict)
print(MSE)
print(R2)


# In[]
from matplotlib import pyplot as plt
fig2=plt.figure(figsize=(8,5))
plt.scatter(x,y,label="y_real")
plt.plot(x,y_predict,'r',label="y_predict")
plt.xlabel("size(x)")
plt.ylabel("price(y)")
plt.legend()
plt.show()


# In[]
# x y再次赋值
x= data2.drop(['价格'],axis=1)
y=data2.loc[:,'价格']

# In[]
#建立多因子回归模型,并且训练
model_multi=LinearRegression()
model_multi.fit(x,y)

# In[]
#多因子模型的预测
y_predict_multi=model_multi.predict(x)
print(y_predict_multi)




# In[]
from sklearn.metrics import mean_squared_error,r2_score
MSE=mean_squared_error(y,y_predict_multi)
R2=r2_score(y, y_predict_multi)
print(MSE)
print(R2)

# In[]
#可视化预测结果
fig3=plt.Figure(figsize=(8,5))
plt.scatter(y, y_predict_multi)
plt.xlabel('real price')
plt.ylabel('predict')

plt.show()




# In[]
X_test=np.array([[160,70000,5]])
y_test_predict=model_multi.predict(X_test)
print(y_test_predict)

### 关于机器学习中的回归分析 #### 回归分析的概念 回归分析是一种统计学上研究变量之间相互关系的方法,旨在通过构建数学模型来描述因变量(目标变量)与自变量(特征变量)之间的依赖关系。在机器学习领域内,线性回归是最基础也是最常用的回归方法之一[^1]。 对于给定的数据集 \((X, y)\),其中 \(X\) 表示输入样本矩阵而 \(y\) 是对应的标签向量,线性回归试图找到一条直线使得这条直线上下波动最小化从而最好地拟合这些点的位置分布情况;当存在多个维度时,则寻找超平面来进行最佳匹配。 #### 实现方法技术栈 为了实现上述提到的各种类型的回归算法,在Python编程环境中可以借助多种库完成: - **Pandas**: 提供高效灵活的数据结构以及数据分析工具,方便读取、清洗并预处理原始数据文件; - **Scikit-Learn (sklearn)**: 这是一个非常流行的开源软件包,它实现了众多经典的监督式非监督式的机器学习算法,并提供了简单易用的应用接口以便快速搭建实验环境或生产系统; 下面给出一段简单的代码片段展示如何利用scikit-learn进行线性回归建模过程: ```python from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression import pandas as pd # 加载数据集 data = pd.read_csv('your_dataset.csv') X = data.drop(columns=['target']) y = data['target'] # 划分训练集测试集 X_train, X_test, y_train, y_test = train_test_split(X, y) # 创建模型实例 model = LinearRegression() # 训练模型 model.fit(X_train, y_train) # 输出模型参数 print(f'Coefficients: {model.coef_}') print(f'Intercept: {model.intercept_}') # 预测新数据的结果 predictions = model.predict(X_test) ``` 此外还有其他一些重要的组件如`matplotlib` `seaborn` 可用于绘制图表辅助理解数据特性及验证模型效果等操作[^2]。 #### 应用场景举例 回归分析广泛应用于各个行业当中解决实际问题,以下是几个典型例子: - **房价预测**:基于房屋面积大小、地理位置等因素估计房产价值; - **销售额度估算**:根据历史销售记录推测未来某段时间内的收入水平; - **医疗健康监测**:依据患者生理指标变化趋势判断疾病发展趋势或者治疗方案的有效程度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值