Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >机器学习之逻辑回归

机器学习之逻辑回归

作者头像
Wu_Candy
发布于 2022-07-04 07:09:45
发布于 2022-07-04 07:09:45
3630
举报
文章被收录于专栏:无量测试之道无量测试之道

第一步:定义问题

我们首先需要解决的是我们将面临一个什么问题,需要我们做什么,俗话说的磨刀不误砍柴工,首先看清对手是谁才能有的放矢。

今天我们要处理的问题是:给训练好的模型输入一张图片,模型返回这张图片是属于什么类型

第二步:收集数据

根据确定的数据分析对象,抽象出在数据分析中所需要的特征信息

今天这个示例的数据来源于网络,大家可以自行下载一些图片即可,本次示例中给出两组图片数据进行演示

第三步:准备数据

这一步将对数据进行清洗、整理,处理空值等一系列操作

from PIL import Image,ImageOps

import glob, os

src_source = 'E:\\All\\AllInHere\\AiProject\\photo\\' #原图片存放路径

src_target = 'E:\\All\\AllInHere\\AiProject\\pre_photo\\' #预处理后图片存放路径

#图片预处理

def preprocess(filename, name, t_path):

print(filename)

#设置缩略图大小

size = 128, 128

#glob.glob 返回所有匹配的文件路径列表(文件路径,

以字符串形式,构成的 list)

for infile in glob.glob(filename):

file, ext = os.path.splitext(infile)

im = Image.open(infile)

#z存储长边

z = 0

x,y = im.size

if x>y:

z = x

else:

z = y

try:

#用长边建立正方形

p = Image.new('RGB', (z,z), (255,255,255))

#查看图片rpg值

#print(np.array(p))

#粘贴

p.paste(im, (0, 0, x, y))

#缩略图

p.thumbnail(size)

#p.show()

#对比度拉伸(确保每个图像的像素范围从0到255)

p = ImageOps.autocontrast(p)

#p.show()

#判断路径是否存在,若不存在则创建

if not os.path.isdir(t_path):

os.makedirs(t_path)

#保存图片

p.save(t_path + '\\' + name + ".thumbnail.jpg",

"JPEG")

except Exception as e:

print(e)

#获取文件夹下所有文件,并调用预处理

def getfiles(dir):

s_path = src_source + dir

t_path = src_target + dir

# 输出所有文件和文件夹

for name in os.listdir(s_path):

filename = s_path + '\\' + name

#判断是否是文件

if os.path.isfile(filename) == True:

#去除扩展名

no_ext_name = os.path.splitext(name)[0]

preprocess(filename, no_ext_name, t_path)

if __name__ == '__main__':

getfiles('apple')

getfiles('banana')

第四步:图像特征和标签放入数组

这一步是为了将数据进行标示出来,进行监督性机器学习,示例代码如下:

img_features = []

img_labels = []

# 图像特征和标签放入数组

def Prepare_Image(filename, label):

im = Image.open(filename)

img_features.append(np.array(im).ravel())

img_labels.append(label)

# print(filename)

# print(label)

第五步:分离训练集和测试集

为了防止我们的模型发生过拟合或者欠拟合之类问题(具体定义自行百度),我们需要将数据进行拆分,用一部分数据进行训练,然后用剩余的数据进行准确性验证,这种也是监督学习模型特有的,这里我们用sklearn 库里现有的函数进行拆分,本示例中将数据集分成70%训练集30%测试集,示例代码如下:

def split_data(img_features, img_labels):

X_train, X_test, Y_train, Y_test = train_test_split(img_features, img_labels, test_size=0.30)#将数据集分成70%训练集30%测试集

train_model(X_train, Y_train, X_test, Y_test)

第六步:训练模型

基于训练数据集训练一个逻辑回归模型,示例代码如下:

def train_model(X_train, Y_train, X_test, Y_test):

# Set regularization rate

reg = 0.01

# print("*"*100)

# print(Y_train)

# 基于训练数据集训练一个逻辑回归模型

clf=LogisticRegression(C=1/reg,solver='lbfgs',multi_class='multinomial').fit(X_train, Y_train)

# print (clf)

#保存模型到本地

joblib.dump(clf, "train_model.m")

evaluate_model(X_test, Y_test, clf)

第七步:评估模型

用训练数据对模型进行训练之后,就可以用于预测数据,示例代码如下:

def evaluate_model(X_test, Y_test, clf):

predictions = clf.predict(X_test)

print('准确度: ', accuracy_score(Y_test, predictions))

第八步:使用模型

可以随机拿一张测试集中或者是其他类似的图片,输入模型中,让模型进行预计,观察模型预测的准确性如何,示例代码如下:

def use_model(clf):

img=Image.open("E:\\All\\AllInHere\\AiProject\\pre_photo\\banana\\41edw+BC UjL._AC_US436_QL65_.thumbnail.jpg") #在模型中输入一个banana的图片

img = np.array(img)

plt.imshow(img)

# 修改图像数据以匹配训练特征的格式

imgfeatures=np.array(ImageOps.equalize(Image.fromarray(img))). ravel().

reshape(1, -1)

pred = clf.predict(imgfeatures)

print('此图片是:', pred[0])


main 函数:

if __name__ == '__main__':

def getfiles(path , label): #数据特征与标签化处理

for name in os.listdir(path):

filename = path + '\\' + name

if os.path.isfile(filename) == True:

Prepare_Image(filename, label)

file_path = 'E:\\All\\AllInHere\\AiProject\\pre_photo'

#第一组图片测试数据

getfiles(file_path + '\\' + 'apple' , 'apple')

#第二组图片测试数据

getfiles(file_path + '\\' + 'banana' , 'banana')

split_data(np.array(img_features), np.array(img_labels))

执行后输出内容为:

准确度: 1.0

此图片是: banana

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无量测试之道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
大话机器学习之决策树(DS)
      这是一个医疗检测的数据,前面六个是指标,具体是什么其实没有意义,说的好像化验单上的那些医学术语你都知道似得。最后一个就是结果。我们就是要构建一颗决策树,根据前面六个指标,预测最后结果是消极还是积极。当然,码代码之前我们先要对数据做一点处理。
钱塘小甲子
2019/01/29
4580
大话机器学习之决策树(DS)
机器学习——线性回归
导入类库 1 from sklearn.externals import joblib 2 from sklearn.model_selection import train_test_split 3 from sklearn.datasets import load_boston 4 from sklearn.preprocessing import StandardScaler 5 from sklearn.linear_model import LinearRegression 6 fro
py3study
2020/01/19
4210
机器学习系列:(四)从线性回归到逻辑回归---续篇
欢迎小伙伴们回来继续学习,本篇内容是连着上一篇 “机器学习系列:(四)从线性回归到逻辑回归”文章。 多类分类 现实中有很多问题不只是分成两类,许多问题都需要分成多个类,成为多类分类问题(Multi-class classification)。比如听到一首歌的样曲之后,可以将其归入某一种音乐风格。这类风格就有许多种。scikit-learn用one-vs.-all或one-vs.-the-rest方法实现多类分类,就是把多类中的每个类都作为二元分类处理。分类器预测样本不同类型,将具有最大置信水平的类型作为样本
小莹莹
2018/04/23
6000
机器学习系列:(四)从线性回归到逻辑回归---续篇
手把手教你使用CNN进行交通标志识别(已开源)
在本文中,使用Python编程语言和库Keras和OpenCV建立CNN模型,成功地对交通标志分类器进行分类,准确率达96%。开发了一款交通标志识别应用程序,该应用程序具有图片识别和网络摄像头实时识别两种工作方式。
小白学视觉
2022/12/28
3.2K0
手把手教你使用CNN进行交通标志识别(已开源)
机器学习:基于逻辑回归的分类预测
尽管名为“回归”,逻辑回归实际上是一种分类模型,广泛应用于各个领域。当今社会,深度学习在许多方面已取得了显著成果,使得传统方法相形见绌。然而,正是由于这些传统方法所具有的独特优势,它们依然在各个领域发挥着重要作用。
用户3578099
2023/09/01
4740
机器学习:基于逻辑回归的分类预测
[scikit-learn 机器学习] 6. 逻辑回归
《统计学习方法》逻辑斯谛回归模型( Logistic Regression,LR)
Michael阿明
2020/07/13
7900
基于随机森林(RF)的机器学习模型预测hERG阻断剂活性
从分子相似性评估到使用机器学习技术的定量构效关系分析各种建模方法已应用于不同大小和组成的数据集(阻断剂和非阻滞剂的数量)。本研究中使用从公共生物活性数据开发用于预测hERG阻断剂的稳健分类器。随机森林被用来开发使用不同分子描述符,活性阈值和训练集合成的预测模型。与先前提取数据集的研究报告相比,该模型在外部验证中表现出优异的性能。
DrugAI
2021/01/28
1.4K0
Python3入门机器学习(四)- kNN算法的学习与使用
先基于原有的肿瘤病人的发现时间和肿瘤大小(特征)对应的良性/恶性(值)建立了一张散点图,横坐标是肿瘤大小,纵坐标是发现时间,红色代表良性,蓝色代表恶性,现在要预测的病人的颜色为绿色
Meet相识
2018/09/12
2K0
Python3入门机器学习(四)- kNN算法的学习与使用
Dlib检测人脸68个特征,使用sklearn基于svm训练人脸微笑识别模型
使用Dlib提取人脸特征并训练二类分类器 (smile, nosmile) 来识别人脸微笑表情。
AnieaLanie
2021/12/12
3.8K1
教程丨机器学习算法:从头开始构建逻辑回归模型
原作:Rohith Gandhi 郭一璞 编译自 Hacher Noon 量子位 出品 | 公众号 QbitAI 逻辑回归是继线性回归之后最著名的机器学习算法。 在很多方面,线性回归和逻辑回归是相似的
量子位
2018/07/20
6380
【机器学习笔记】:逻辑回归实战练习(二)
前几篇介绍了逻辑回归在机器学习中的重要性:5个原因告诉你:为什么在成为数据科学家之前,“逻辑回归”是第一个需要学习的
Python数据科学
2018/12/19
9280
【源码分享】机器学习之Python支持向量机
关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 前言 在写代码前,先简单的过一下SVM的基本原理,如下: SVM(support vector machine)简单的说是一个分类器,并且是二类分类器。 Vector:通俗说就是点,或是数据。 Machine:也就是classifier,也就是分类器。 SVM作为传统机器学习的一个非常重要的分类算法,它是一种通用的前馈网络类型,最早是由Vladimir N.Vapnik 和 Alexe
昱良
2018/04/09
1K0
【源码分享】机器学习之Python支持向量机
[scikit-learn 机器学习] 3. K-近邻算法分类和回归
1. KNN模型 确定距离度量方法(如欧氏距离) 根据 K 个最近的距离的邻居样本,选择策略做出预测 模型假设:距离相近的样本,有接近的响应值 2. KNN分类 根据身高、体重对性别进行分类 import numpy as np import matplotlib.pyplot as plt X_train = np.array([ [158, 64], [170, 86], [183, 84], [191, 80], [155, 49], [163, 59
Michael阿明
2020/07/13
5020
[scikit-learn 机器学习] 3. K-近邻算法分类和回归
快速入门Python机器学习(八)
sklearn.preprocessing.StandardScaler:通过去除均值和缩放单位方差来标准化特征
顾翔
2022/05/22
4510
快速入门Python机器学习(八)
利用Python sklearn的SVM对AT&T人脸数据进行人脸识别
要求:使用10-fold交叉验证方法实现SVM的对人脸库识别,列出不同核函数参数对识别结果的影响,要求画对比曲线。 使用Python完成,主要参考文献【4】,其中遇到不懂的功能函数一个一个的查官方文档和相关资料。其中包含了使用Python画图,遍历文件,读取图片,PCA降维,SVM,交叉验证等知识。 0.数据说明预处理 下载AT&T人脸数据(http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html),解压缩后为40个文件夹,每个文
ascii0x03
2018/04/12
1.8K0
利用Python sklearn的SVM对AT&T人脸数据进行人脸识别
机器学习算法(一): 基于逻辑回归的分类预测
项目链接参考fork一下直接运行:https://www.heywhale.com/home/column/64141d6b1c8c8b518ba97dcc
汀丶人工智能
2023/03/22
5610
教你使用TensorFlow2判断细胞图像是否感染
在本教程中,我们将使用 TensorFlow (Keras API) 实现一个用于二进制分类任务的深度学习模型,该任务包括将细胞的图像标记为感染或未感染疟疾。
润森
2022/08/18
4290
教你使用TensorFlow2判断细胞图像是否感染
什么?自如租房价格是图片【2】【Python爬虫】
灰度转换公式:L = R * 299/1000 + G * 587/1000 + B * 114/1000
lpe234
2021/07/29
5950
什么?自如租房价格是图片【2】【Python爬虫】
Python3入门机器学习(八)- 多项式回归
相当于我们为样本多添加了一些特征,这些特征是原来样本的多项式项,增加了这些特征之后,我们们可以使用线性回归的思路更好的我们的数据
Meet相识
2018/09/12
2.4K0
Python3入门机器学习(八)- 多项式回归
关于重温机器学习笔记-线性模型
由于高等数学底子太差的原因,机器学习总是无法深入学习下去,只能做一个简单的尝试者,甚至连调优也未必能算的上,不过这样也好,可以把重心放到对业务的理解上,以及业务和模型的选择上。
python与大数据分析
2022/03/11
4770
关于重温机器学习笔记-线性模型
推荐阅读
相关推荐
大话机器学习之决策树(DS)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档