需要源码请点赞关注收藏后评论区留言私信~~~
一、回归分析
回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。具体来说,回归分析法指利用数据统计原理,对大量统计数据进行数学处理,并确定因变量与某些自变量的相关关系,建立一个相关性较好的回归方程(函数表达式),并加以外推,用于预测今后因变量变化的分析
回归分析可以简单理解为数据分析与预测,通过对数据进行分析实现预测,也就是适当扩大已有自变量的取值范围,并承认该回归方程在扩大的定义域内成立,一般来说,回归分析的主要过程步骤如下
(1)收集一组包含因变量和自变量的数据
(2)根据因变量和自变量之间的关系,初步设定回归模型
(3)求解合理的回归系数
(4)进行相关性检验,确定相关系数
(5)利用模型对因变量作出预测或解释,并计算预测值的置信区间
二、一元线性回归
一元线性回归分析预测法,是根据自变量X和因变量Y的相关关系,建立X与Y的线性回归方程进行预测的方法。由于市场现象一般是受多种因素的影响,而并不是仅仅受一个因素的影响。所以应用一元线性回归分析预测法,必须对影响市场现象的多种因素做全面分析。只有当诸多的影响因素中,确实存在一个对因变量影响作用明显高于其他因素的变量,才能将它作为自变量,应用一元相关回归分析市场预测法进行预测
算法原理
回归模型的设定给出了回归函数的形式,但模型中的回归参数是未知的。要对模型参数进行估计和统计推断,需要从总体样本中抽样获得数据。一元线性回归模型中参数估计方法有最小二乘法、矩方法和极大似然方法。最小二乘法(Least Squre Estimation, LSE)又称最小平方法,它通过最小化误差的平方和寻找数据的最佳函数匹配。普通最小二乘法是最为直观的估计方法,对模型条件要求最少,也就是使散点图上所有的观测值到回归直线距离平方和最小
回归分析要通过样本所估计的参数来代替总体的真实参数,或者说用样本回归线代替总体回归线,尽管从统计性质上已知,如果有足够多的重复抽样,参数的估计值的期望就等于总体的参数真值,但在一次抽样中,估计值不一定就等于该真值,那么在一次抽样中,参数的估计值与真值的差异有多大,是否显著,就需要进一步进行统计检验,一元回归的统计检验主要包括拟合优度检验,变量显著性检验和残差标准差检验
对iris数据集中花萼宽度与长度进行一元线性回归分析
部分代码如下
import pandas as pd import matplotlib.pyplot as plt from sklearn.datasets import load_iris from sklearn.linear_model import LinearRegression %matplotlib inline iris = load_iris() #导入数据集iris data=pd.DataFrame(iris.data) data.columns=['sepal-length', 'sepal-width', 'petal-length', 'petal-width'] # 使用sklearn完成一元线性回归 x = data['petal-length'].values y = data['petal-width'].values x = x.reshape(len(x),1) y = y.reshy,s=50) plt.plot(x,pre,'r-',linewidth=2) plt.xlabel('petal-length') plt.ylabel('petal-width') for idx, m in enumerate(x): plt.plot([m,m],[y[idx],pre[idx]], 'g-') plt.show() print(u"系数:", clf.coef_ ) print(u"截距:", clf.intercept_ ) # 对花萼长度为3.9的花,预测其花萼宽度。 print('预测值为:',clf.predict([[3.9]]) )
三、逻辑回归
线性回归算法能对连续值的结果进行预测,而逻辑回归模型是机器学习从统计领域借鉴的另一种技术,用于分析二分类或有序的因变量与解释变量之间的关系
逻辑回归算法是一种广义的线性回归分析方法,它仅在线性回归算法的基础上,利用Sigmoid函数对事件发生的概率进行预测。也就是说,在线性回归中可以得到一个预测值,然后将该值通过逻辑函数进行转换,将预测值转为概率值,再根据概率值实现分类
逻辑回归常用于数据挖掘、疾病自动诊断和经济预测等领域
逻辑回归模型
逻辑回归与线性回归类似,因为两者的目标都是找出每个输入变量的权重值。与线性回归不同的是,输出的预测值需要使用逻辑函数的非线性函数进行变换。逻辑函数即sigmoid函数,能将任意值转换为0到1的范围内。Sigmoid函数定义如下式所示
对iris数据集进行逻辑回归分析
结果如下 可见精度不是特别高
部分代码如下
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression import warnings warnings.filterwarnings('ignore') X = load_iris().data y = load_iris().target # 划分训练集和测试集,并对数据进行I标准化 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0) from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.tran测试集进行预测 classifier = LogisticRegression(random_state = 0) classifier.fit(X_train, y_train) y_pred = classifier.predict(X_test) #用LogisticRegression自带的score获得模型在测试集上的准确性 print('Accuracy of LR Classifier:%.3f'%classifier.score(X_test,y_test))
创作不易 觉得有帮助请点赞关注收藏~~~