回归分析
线性回归(普遍解法最小二乘法)
步骤:
1、读取数据
2、画出散点图,求x和y 的相关系数:plt.scatter(x,y),x和y是dataframe
3、估计参数模型,建立回归模型:lrModel=LinearRegression()
4、训练模型: lm.fit(x,y)
5、对回归模型进行检验: lm.score(x,y)
6、利用回归模型进行预测: lm.predict()
# -*- coding:utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression
boston = load_boston()
print(boston.keys())
# result:
# ['data', 'feature_names', 'DESCR', 'target']
print (boston.feature_names)
# result:
# ['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO' 'B' 'LSTAT']
# print boston.DESCR # 取消注释并运行,可查看数据说明文档
x = boston.data[:, np.newaxis, 5]
y = boston.target
lm = LinearRegression() # 声明并初始化一个线性回归模型的对象
lm.fit(x, y) # 拟合模型,或称为训练模型
print (u'方程的确定性系数(R^2): %.2f' % lm.score(x, y))
# result: 方程的确定性系数(R^2): 0.48
plt.scatter(x, y, color='green') # 显示数据点
plt.plot(x, lm.predict(x), color='blue', linewidth=3) # 画出回归直线
plt.xlabel('Average Number of Rooms per Dwelling (RM)')
plt.ylabel('Housing Price')
plt.title('2D Demo of Linear Regression')
plt.show()
dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename'])
['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO'
'B' 'LSTAT']
方程的确定性系数(R^2): 0.48
有关线性回归分析很详细
logistic回归模型建模实例
逻辑回归(Logistic Regression)是用于处理因变量为分类变量的回归问题,常见的是二分类或二项分布问题,也可以处理多分类问题,它实际上是属于一种分类方法。
二分类问题的概率与自变量之间的关系图形往往是一个S型曲线,采用的Sigmoid函数实现。
Logistic回归模型的建模步骤
1.首先根据分析的目的设置指标变量(因变量与自变量),然后我们进行数据的收集,根据收集到的数据,对特征再次进行筛选.(在具体筛选时,利用了随机逻辑回归中的get_support()函数)
2. 列出回归方程,估计出模型中的回归系数
.3. 进行模型的检测,模型有效性的检验指标有很多,最基本的有正确率,其次有混淆矩阵,ROC曲线,KS值等.
4,模型应用.
# -*- coding:utf-8 -*-
import pandas as pd
from sklearn.linear_model import LogisticRegression, RandomizedLogisticRegression
from sklearn.model_selection import train_test_split
# 导入数据并观察
data = pd.read_csv('../data/LogisticRegression.csv', encoding='utf-8')
# print data.head(5) # 查看数据框的头五行
# 将类别型变量进行独热编码one-hot encoding
data_dum = pd.get_dummies(data, prefix='rank', columns=['rank'], drop_first=True)
print (data_dum.tail(5) ) # 查看数据框的最后五行
# result:
# admit gre gpa rank_2 rank_3 rank_4
# 395 0 620 4.00 1.0 0.0 0.0
# 396 0 560 3.04 0.0 1.0 0.0
# 397 0 460 2.63 1.0 0.0 0.0
# 398 0 700 3.65 1.0 0.0 0.0
# 399 0 600 3.89 0.0 1.0 0.0
# 切分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(data_dum.ix[:, 1:], data_dum.ix[:, 0], test_size=.1, random_state=520)
lr = LogisticRegression() # 建立LR模型
lr.fit(X_train, y_train) # 用处理好的数据训练模型
print ('逻辑回归的准确率为:{0:.2f}%'.format(lr.score(X_test, y_test) *100))
train_test_split函数用于将矩阵随机划分为训练子集和测试子集,并返回划分好的训练集测试集样本和训练集测试集标签。
格式:
X_train,X_test, y_train, y_test =cross_validation.train_test_split(train_data,train_target,test_size=0.3, random_state=0)
参数解释:
train_data:被划分的样本特征集
train_target:被划分的样本标签
test_size:如果是浮点数,在0-1之间,表示样本占比;如果是整数的话就是样本的数量
random_state:是随机数的种子。
随机数种子:其实就是该组随机数的编号,在需要重复试验的时候,保证得到一组一样的随机数。比如你每次都填1,其他参数一样的情况下你得到的随机数组是一样的。但填0或不填,每次都会不一样。
随机数的产生取决于种子,随机数和种子之间的关系遵从以下两个规则:
种子不同,产生不同的随机数;种子相同,即使实例不同也产生相同的随机数。