sklearn logisticregression模型怎么返回预测的概率

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sklearn logisticregression模型怎么返回预测的概率相关的知识,希望对你有一定的参考价值。

1.数据生成

2.模型建立
#regr为回归过程,fit(x,y)进行回归
regr = LinearRegression().fit(dataSet_x, dataSet_y)
#输出R的平方
print(regr.score(dataSet_x, dataSet_y))
plt.scatter(dataSet_x, dataSet_y, color='black')
3.模型预测

#用predic预测,这里预测输入x对应的值,进行画线
plt.plot(dataSet_x, regr.predict(dataSet_x), color='red', linewidth=1)
plt.show()
--------所以模型预测,调用.predict函数就行
参考技术A Logistic回归的主要用途:
寻找危险因素:寻找某一疾病的危险因素等;
预测:根据模型,预测在不同的自变量情况下,发生某病或某种情况的概率有多大;
判别:实际上跟预测有些类似,也是根据模型,判断某人属于某病或属于某种情况的概率有多大,也就是看一下这个人有多大的可能性是属于某病。
Logistic回归主要在流行病学中应用较多,比较常用的情形是探索某疾病的危险因素,根据危险因素预测某疾病发生的概率,等等。例如,想探讨胃癌发生的危险因素,可以选择两组人群,一组是胃癌组,一组是非胃癌组,两组人群肯定有不同的体征和生活方式等。这里的因变量就是是否胃癌,即“是”或“否”,自变量就可以包括很多了,例如年龄、性别、饮食习惯、幽门螺杆菌感染等。自变量既可以是连续的,也可以是分类的。本回答被提问者采纳
参考技术B 用model.predict_proba

sklearn数据库-老鱼学sklearn

在做机器学习时需要有数据进行训练,幸好sklearn提供了很多已经标注好的数据集供我们进行训练。
本节就来看看sklearn提供了哪些可供训练的数据集。

这些数据位于datasets中,网址为:http://scikit-learn.org/stable/modules/classes.html#module-sklearn.datasets

房价数据

加载波士顿房价数据,可以用于线性回归用:
sklearn.datasets.load_boston:http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_boston.html#sklearn.datasets.load_boston
加载方式为:

from sklearn.datasets import load_boston
boston = load_boston()
print(boston.data.shape)

这个数据集的shape为:

(506, 13)

也就是506行,13列,这里13列就是影响房价的13个属性,具体是哪些属性可以通过如下代码打印出来:

print(boston.feature_names)

输出为:

[\'CRIM\' \'ZN\' \'INDUS\' \'CHAS\' \'NOX\' \'RM\' \'AGE\' \'DIS\' \'RAD\' \'TAX\' \'PTRATIO\'
 \'B\' \'LSTAT\']

具体代表啥意思,要么自己猜,要么上网查吧,我不一一去解释了,我猜几个:RM:room数,也就是户型中的几房,AGE:age(房龄),不知道猜得对不对,大家自己去实践就是了。

你说我咋知道这个数据集中有feature_names属性,我也不知道,我只是把上面的boston整个打印出来看到其中有这个属性的。

预测房价案例

from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
# 加载房价数据
boston = load_boston()
data_X = boston.data
data_y = boston.target

# 拆分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(data_X, data_y, test_size=0.3)

# 创建线性回归模型
model = LinearRegression()
# 训练模型
model.fit(X_train, y_train)
# 打印出预测的前5条房价数据
print("预测的前5条房价数据:")
print(model.predict(X_test)[:5])

# 打印出测试集中实际房价前5条数据
print("测试集中实际房价前5条数据:")
print(y_test[:5])

输出:

预测的前5条房价数据:
[ 17.44807408  27.78251433  18.8344117   17.85437188  34.47632703]
测试集中实际房价前5条数据:
[ 14.3  22.3  22.6  20.6  34.9]

以这个结果集中第一条数据为例,我们预测出某房子的价格是17.4万,而实际价格是14.3万。

不过说实话,上面的房价数据只能用于测试算法,我们真要预测房价的话,原始数据的获得没有那么全和规整,因此,在机器学习中,收集数据并清洗也是一个很重要的工作,脏活累活也必须得干,光有算法没啥用。

花的数据前面一个博文已经讲过了,这里就不再重复了。

手写数字识别数据

还有手写数字识别的,这个也很常用:http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html#sklearn.datasets.load_digits

创建样本数据

也可以生成一些虚拟的数据,这些是位于官网的API文档中Samples generator一节:

案例源代码为:

from sklearn.datasets import make_regression
import matplotlib.pyplot as plt
# 创建100个样本,1个属性值的数据,输出一个目标值,同时也设置了噪音
X, y = make_regression(n_samples=100, n_features=1, n_targets=1, noise=10)
print(X.shape)
print(y.shape)

# 对X,y画散点图,看看长啥模样的
plt.scatter(X, y)
plt.show()

输出的数据为:

(100, 1)
(100,)

也就是X值中有100行1列,y值是100行的值。

输出的图形为:

看起来接近一条直线。

以上是关于sklearn logisticregression模型怎么返回预测的概率的主要内容,如果未能解决你的问题,请参考以下文章

无法从 sklearn.externals.joblib 导入 Sklearn

sklearn的PCA

sklearn数据库-老鱼学sklearn

使用sklearn画二分类模型ROC曲线,PR曲线

Keras Sklearn Tuner 模块“sklearn”没有属性“管道”

导入sklearn时出现conda sklearn错误