逻辑回归(高效2分类)-基于opencv和python的学习笔记(十四)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_44474718/article/details/86696828

逻辑回归:与它的名字相反,实际上他是用于目标分类的模型。

它使用一个逻辑函数或者(sigmoid函数)把任意输入的实值x转换为值区间在0到1之间的一个预测值y。将y向最近的整数取整可以高效的把输入分类到属于0或者1的类别。
在这里插入图片描述

import numpy as np
import cv2
from sklearn import datasets
from sklearn import model_selection
from sklearn import metrics
import matplotlib.pyplot as plt

plt.style.use('ggplot')
iris=datasets.load_iris()         # 载入训练数据集

"""
print (dir(iris))             #字典结构
print (iris.data.shape)       #数据大小和特征
print (iris.feature_names)     #特征
print (iris.target.shape)
print (np.unique(iris.target))    #标签
"""
# 简化二分类问题   因为仅关注二分类问题,忽略不需要的标签
idx=iris.target !=2     # 得到标签为0和1的数据
data=iris.data[idx].astype(np.float32)
target=iris.target[idx].astype(np.float32)

# 检查数据
plt.scatter(data[:,0],data[:,1],c=target,cmap=plt.cm.Paired,s=180)
plt.xlabel(iris.feature_names[0])
plt.ylabel(iris.feature_names[1])
plt.show()

# 把数据分为训练集和测试集
X_train,X_test,Y_train,Y_test=model_selection.train_test_split(data,target,test_size=0.1,random_state=42)   #42 表示随机状态

# 训练分类器
lr=cv2.ml.LogisticRegression_create()   # 创建分类器
lr.setTrainMethod(cv2.ml.LogisticRegression_MINI_BATCH)          # 指定训练方法
lr.setMiniBatchSize(1)                                           # 使用每个数据的之后都更新一次模型
lr.setIterations(100)                                            # 算法结束之前的迭代次数
lr.train(X_train,cv2.ml.ROW_SAMPLE,Y_train)                      # 调用对象的训练方法
lr.get_learnt_thetas()                                           # 检索得到的权重 x=w0f0+w1f1+w2f2+w3f3+w4f4+w4  四个特征f,偏差w4
# print(lr.get_learnt_thetas())

# 测试分类器
ret1, y_pred = lr.predict (X_train)
print (metrics.accuracy_score(Y_train,y_pred))      # 训练数据集上的准确度

ret2, Y_pred= lr.predict(X_test)
print (metrics.accuracy_score(Y_test,Y_pred))        # 测试集上的准确度

猜你喜欢

转载自blog.csdn.net/weixin_44474718/article/details/86696828