机器学习第六周-逻辑回归

logistic回归与多重线性回归实际上有很多相同之处,最大的区别就在于他们的因变量不同,其他的基本都差不多,正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalized linear model)。这一家族中的模型形式基本上都差不多,不同的就是因变量不同,如果是连续的,就是多重线性回归,如果是二项分布,就是logistic回归,如果是poisson分布,就是poisson回归,如果是负二项分布,就是负二项回归,等等。只要注意区分它们的因变量就可以了。

logistic回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释。所以实际中最为常用的就是二分类的logistic回归。

逻辑回归是用来做分类算法的,大家都熟悉线性回归,一般形式是Y=aX+b,y的取值范围是[-∞, +∞],有这么多取值,怎么进行分类呢?不用担心,伟大的数学家已经为我们找到了一个方法。

也就是把Y的结果带入一个非线性变换的Sigmoid函数中,即可得到[0,1]之间取值范围的数S,S可以把它看成是一个概率值,如果我们设置概率阈值为0.5,那么S大于0.5可以看成是正样本,小于0.5看成是负样本,就可以进行分类了。



损失函数

逻辑回归的损失函数是 log loss,也就是对数似然函数,函数公式如下:


公式中的 y=1 表示的是真实值为1时用第一个公式,真实 y=0 用第二个公式计算损失。为什么要加上log函数呢?可以试想一下,当真实样本为1是,但h=0概率,那么log0=∞,这就对模型最大的惩罚力度;当h=1时,那么log1=0,相当于没有惩罚,也就是没有损失,达到最优结果。所以数学家就想出了用log函数来表示损失函数。

最后按照梯度下降法一样,求解极小值点,得到想要的模型效果。


代码实现:

from sklearn import datasets

from sklearn.cross_validation import train_test_split

from sklearn.linear_model import LogisticRegression

cancer =datasets.load_breast_cancer()

cancer_X=cancer.data

print(cancer_X.shape)

cancer_y=cancer.target

print(cancer_y.shape)

X_train,X_test,y_train, y_test=train_test_split(

    cancer_X,cancer_y,test_size=0.3)

clf = LogisticRegression()

clf.fit(X_train,y_train)

clf_y_predict = clf.predict(X_test)

print(clf_y_predict)

score=clf.score(X_test,y_test)

print(score)

你可能感兴趣的:(机器学习第六周-逻辑回归)