pythonr2_score模型评估 python中r2_score_数据

pythonr2_score模型评估 python中r2_score_线性回归_02

回归分析

线性回归(普遍解法最小二乘法)

步骤:

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

pythonr2_score模型评估 python中r2_score_pythonr2_score模型评估_03


有关线性回归分析很详细

 

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))

pythonr2_score模型评估 python中r2_score_pythonr2_score模型评估_04

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或不填,每次都会不一样。

随机数的产生取决于种子,随机数和种子之间的关系遵从以下两个规则:

种子不同,产生不同的随机数;种子相同,即使实例不同也产生相同的随机数。