-
python knn模型_使用Python训练KNN模型并进行分类
2020-12-03 14:27:10K临近分类算法是数据挖掘中较为简单的一种分类方法,通过计算不同数据点间的距离对数据进行分类,并对新的数据进行分类预测。我们在之前的文章《K邻近(KNN)分类和预测算法的原理及实现》和《协同过滤推荐算法的原理...K临近分类算法是数据挖掘中较为简单的一种分类方法,通过计算不同数据点间的距离对数据进行分类,并对新的数据进行分类预测。我们在之前的文章《K邻近(KNN)分类和预测算法的原理及实现》和《协同过滤推荐算法的原理及实现》两篇文章中都详细介绍过。本篇文章将介绍在python中使用机器学习库sklearn建立K临近模型(k-NearestNeighbor)的过程并使用模型对数据进行预测。
准备工作
首先是开始前的准备工作,导入我们需要使用的库文件。这里一共需要使用5个库文件。第一个是机器学习库,第二个是用于模型检验的交叉检验库,第三个是数值计算库,第四个是科学计算库,最后是图表库。
#导入机器学习KNN分析库
from sklearn.neighbors import KNeighborsClassifier
#导入交叉验证库
from sklearn import cross_validation
#导入数值计算库
import numpy as np
#导入科学计算库
import pandas as pd
#导入图表库
import matplotlib.pyplot as plt
读取并查看数据表
读取并导入所需数据,创建名为knn_data的数据表,后面我们将使用这个数据对模型进行训练和检验。
#读取并创建名为knn_data的数据表
knn_data=pd.DataFrame(pd.read_csv('knn_data.csv'))
使用head函数查看数据表的内容,这里只查看前5行的数据,数据表中包含三个字段,分别为贷款金额,用户收入和贷款状态。我们希望通过贷款金额和用户收入对最终的贷款状态进行分类和预测。
#查看数据表前5行
knn_data.head(5)
绘制散点图观察分类
创建模型之前先对数据汇总散点图,观察贷款金额和用户收入两个变量的关系以及对贷款状态的影响,下面是具体的代码,根据贷款状态将数据分为两组,第一组为Fully Paid,第二组为Charged Off。
#Fully Paid数据集的x1
fully_paid_loan=knn_data.loc[(knn_data["loan_status"] == "Fully Paid"),["loan_amnt"]]
#Fully Paid数据集的y1
fully_paid_annual=knn_data.loc[(knn_data["loan_status"] == "Fully Paid"),["annual_inc"]]
#Charge Off数据集的x2
charged_off_loan=knn_data.loc[(knn_data["loan_status"] == "Charged Off"),["loan_amnt"]]
#Charge Off数据集的y2
charged_off_annual=knn_data.loc[(knn_data["loan_status"] == "Charged Off"),["annual_inc"]]
数据分组后开始绘制散点图,下面是绘图过程和具体的代码。
#设置图表字体为华文细黑,字号15
plt.rc('font', family='STXihei', size=15)
#绘制散点图,Fully Paid数据集贷款金额x1,用户年收入y1,设置颜色,标记点样式和透明度等参数
plt.scatter(fully_paid_loan,fully_paid_annual,color='#9b59b6',marker='^',s=60)
#绘制散点图,Charge Off数据集贷款金额x2,用户年收入y2,设置颜色,标记点样式和透明度等参数
plt.scatter(charged_off_loan,charged_off_annual,color='#3498db',marker='o',s=60)
#添加图例,显示位置右上角
plt.legend(['Fully Paid', 'Charged Off'], loc='upper right')
#添加x轴标题
plt.xlabel('贷款金额')
#添加y轴标题
plt.ylabel('用户收入')
#添加图表标题
plt.title('贷款金额与用户收入')
#设置背景网格线颜色,样式,尺寸和透明度
plt.grid( linestyle='--', linewidth=0.2)
#显示图表
plt.show()
在散点图中,紫色三角形为Fully Paid组,蓝色圆形为Charged Off组。我们所要做的是通过KNN模型对这两组数据的特征进行学习,例如从肉眼来看Fully Paid组用户收入要高于Charged Off组。并使用模型对新的数据进行分类预测。
设置模型的自变量和因变量
创建KNN模型前,先设置模型中的自变量和因变量,也就是特征和分类。这里将贷款金额和用户收入设置为自变量,贷款状态是我们希望预测的结果,因此设置为因变量。
#将贷款金额和用户收入设为自变量X
X = np.array(knn_data[['loan_amnt','annual_inc']])
#将贷款状态设为因变量Y
Y = np.array(knn_data['loan_status'])
设置完成后查看自变量和因变量的行数,这类一共有29行数据,后面我们将把这29行数据分割为训练集和测试集,训练集用来建立模型,测试集则对模型的准确率进行检验。
#查看自变量和因变量的行数
X.shape,Y.shape
将数据分割为训练集和测试集
采用随机抽样的方式将数据表分割为训练集和测试集,其中60%的训练集数据用来训练模型,40%的测试集数据用来检验模型准确率。
#将原始数据通过随机方式分割为训练集和测试集,其中测试集占比为40%
X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, Y, test_size=0.4, random_state=0)
分割后测试集的数据为17条。这些数据用来训练模型。
#查看训练集数据的行数
X_train.shape,y_train.shape
对模型进行训练
将训练集数据X_train和y_train代入到KNN模型中,对模型进行训练。下面是具体的代码和结果。
#将训练集代入到KNN模型中
clf = KNeighborsClassifier(n_neighbors=3)
clf.fit(X_train,y_train)
使用测试集测对模型进行测试
使用测试集数据X_test和y_test对训练后的模型进行检验,模型准确率为75%。
#使用测试集衡量模型准确度
clf.score(X_test, y_test)
完成训练和测试后,使用模型对新数据进行分类和预测,下面我们建立一组新的数据,贷款金额为5000元,用户收入为40000,看看模型对新数据的分组结果。
#设置新数据,贷款金额5000,用户收入40000
new_data = np.array([[5000,40000]])
模型对新数据的分组结果为Charged Off。这个分类准确吗?我们继续再来看下模型对这组新数据分组的概率。
#对新数据进行分类预测
clf.predict(new_data)
67%的概率为Charged Off,33%的概率为Fully Paid。根据这一概率模型将新数据划分到Charged Off组。
#新数据属于每一个分类的概率
clf.classes_,clf.predict_proba(new_data)
—【所有文章及图片版权归 蓝鲸(王彦平)所有。欢迎转载,但请注明转自“蓝鲸网站分析博客”。】—
-
python训练模型需要多少个ecopy_如何用numpy数据和批量大小训练pytorch模型?
2020-12-06 15:03:23我正在学习Pythorch的基础知识,并打算创建一个简单的4层网络来训练虹膜数据集进行分类。在参考了许多教程之后,我写了这段代码。在import pandas as pdfrom sklearn.datasets import load_irisimport torchfrom ...我正在学习Pythorch的基础知识,并打算创建一个简单的4层网络来训练虹膜数据集进行分类。在参考了许多教程之后,我写了这段代码。在import pandas as pd
from sklearn.datasets import load_iris
import torch
from torch.autograd import Variable
epochs=300
batch_size=20
lr=0.01
#loading data as numpy array
data = load_iris()
X=data.data
y=pd.get_dummies(data.target).values
#convert to tensor
X= Variable(torch.from_numpy(X), requires_grad=False)
y=Variable(torch.from_numpy(y), requires_grad=False)
print(X.size(),y.size())
#neural net model
model = torch.nn.Sequential(
torch.nn.Linear(4, 10),
torch.nn.ReLU(),
torch.nn.Dropout(),
torch.nn.Linear(10, 5),
torch.nn.ReLU(),
torch.nn.Dropout(),
torch.nn.Linear(5, 3),
torch.nn.Softmax()
)
print(model)
# Loss and Optimizer
optimizer = torch.optim.Adam(model.parameters(), lr=lr)
loss_func = torch.nn.CrossEntropyLoss()
for i in range(epochs):
# Forward pass
y_pred = model(X)
# Compute and print loss.
loss = loss_func(y_pred, y)
print(i, loss.data[0])
# Before the backward pass, use the optimizer object to zero all of the
# gradients for the variables it will update (which are the learnable weights
# of the model)
optimizer.zero_grad()
# Backward pass
loss.backward()
# Calling the step function on an Optimizer makes an update to its parameters
optimizer.step()
目前我面临两个问题。在我想将批大小设置为20。我该怎么做?在
在这个步骤y_pred = model(X)它显示了这个错误
错误
^{pr2}$
-
【caffe】使用python脚本训练分类模型,并可视化Loss和Accuracy.
2019-10-28 10:29:38PS:这里不是使用caffe默认的终端调用训练指令,而是使用python脚本来进行网络训练,并在网络训练完毕后显示训练过程的loss和accuracy。 详细脚本如下: 1)需要修改的变量: cafferoot=‘caffe根目录’ solver=...PS:这里不是使用caffe默认的终端调用训练指令,而是使用python脚本来进行网络训练,并在网络训练完毕后显示训练过程的loss和accuracy。
详细脚本如下:
1)需要修改的变量:
cafferoot=‘caffe根目录’
solver='网络solver文件'
loss和accuracy为自己网络文件中对应层的名称。
2)其中绿色、黄色和红色曲线分别代表训练loss、测试loss和测试的accuracy。
#coding=utf-8 import sys cafferoot='/data_1/caffe-path/caffe-refinedet-shufflenet-nocudnn' #修改为自己的caffe路径 sys.path.insert(0,cafferoot+'/python') import matplotlib.pyplot as plt from numpy import zeros,arange from math import ceil import caffe caffe.set_device(0) caffe.set_mode_gpu() # 使用SGDsolver,即随机梯度下降算法,这个要看你solver文件里,一般不写的话就是sgd #solver=caffe.AdamSolver('/root/caffe/examples/mnist/lenet_solver_adam.prototxt') solver = caffe.SGDSolver('/data_1/deep_learning_layer/layer/Resnet18/net/ResNet-18-depthwise/net_dw_thin/mobilenet_resnet18_solver.prototxt') # 等价于solver文件中的max_iter,即最大解算次数 max_iter = 200000 # 每隔100次收集一次数据 display= 100 # 每次测试进行100次解算, test_iter = 100 # 每10000次训练进行一次测试(100次解算) test_interval =10000 #初始化 train_loss = zeros(int(max_iter * 1.0 / display)) test_loss = zeros(int(max_iter * 1.0 / test_interval)) test_acc = zeros(int(max_iter * 1.0 / test_interval)) # iteration 0,不计入 solver.step(1) # 辅助变量 _train_loss = 0; _test_loss = 0; _accuracy = 0 # 进行解算 for it in range(max_iter): # 进行一次解算 solver.step(1) # 每迭代一次,训练batch_size张图片 _train_loss += solver.net.blobs['loss'].data #注意,这里的‘loss’为你使用的网络中loss层的名称 if it % display == 0: # 计算平均train loss train_loss[it // display] = _train_loss / display _train_loss = 0 if it % test_interval == 0: for test_it in range(test_iter): # 进行一次测试 solver.test_nets[0].forward() # 计算test loss _test_loss += solver.test_nets[0].blobs['loss'].data #注意,这里的‘loss’为你使用的网络中loss层的名称 # 计算test accuracy _accuracy += solver.test_nets[0].blobs['acc/top-1'].data #注意,这里的‘acc/top-1’为你使用的网络中Accuracy层的名称 # 计算平均test loss test_loss[it / test_interval] = _test_loss / test_iter # 计算平均test accuracy test_acc[it / test_interval] = _accuracy / test_iter _test_loss = 0 _accuracy = 0 # 绘制train loss、test loss和accuracy曲线 print '\nplot the train loss and test accuracy\n' _, ax1 = plt.subplots() ax2 = ax1.twinx() # train loss -> 绿色 ax1.plot(display * arange(len(train_loss)), train_loss, 'g') # test loss -> 黄色 ax1.plot(test_interval * arange(len(test_loss)), test_loss, 'y') # test accuracy -> 红色 ax2.plot(test_interval * arange(len(test_acc)), test_acc, 'r') ax1.set_xlabel('iteration') ax1.set_ylabel('loss') ax2.set_ylabel('accuracy') plt.show()
-
python加载模型文件进行图片分类_tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式...
2020-12-09 11:54:51Google提供了一个工具,TensorBoard,它能以图表的方式分析你在训练过程中汇总的各种数据,其中包括Graph结构。所以我们可以简单的写几行Pyhton,加载Graph,只在logdir里,输出Graph结构数据,并可以查看其图结构。...Google提供了一个工具,TensorBoard,它能以图表的方式分析你在训练过程中汇总的各种数据,其中包括Graph结构。
所以我们可以简单的写几行Pyhton,加载Graph,只在logdir里,输出Graph结构数据,并可以查看其图结构。
执行下述代码,将数据流图保存为图片,在目录F:/tensorflow/graph下生成文件events.out.tfevents.1508420019.XM-PC
import tensorflow as tf
from tensorflow.python.platform import gfile
graph = tf.get_default_graph()
graphdef = graph.as_graph_def()
_ = tf.train.import_meta_graph("model.ckpt.metaa")
summary_write = tf.summary.FileWriter("./" , graph)
summary_write.close()
启用tensorboard
我用的python开发环境是Anaconda
(1)打开Anaconda Prompt,输入activate tensorflow进入tensorflow环境;
(2)开启tensorboard,输入如下命令
tensorboard --logdir=F://tensorflow//graph
其中logdir中的参数就是代码中保存graph的路径,如果写为单斜杠,tensorboard可打开,但graphs中显示“No graph definition files were found”,并不显示graph,路径参数改为双斜杠就可以了。
3.用tensorboard查看生成的graph
(1)在谷歌浏览器中打开http://127.0.0.1:6006/,会显示橙色界面;
(2)在第一行的选项卡中选择graphs,即可看到结果。
以上这篇tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持python博客。
-
使用Tensorflow搭建并训练TextCNN模型,对文本进行分类
2019-10-12 14:43:01通过本博文,你可以自己搭建并训练一个简单的文本分类模型,本文的代码注释非常详细。 使用的开发环境:python3(Anaconda管理)、Tensorflow1.13.1 本文主要分为以下几个部分进行展开讲解: (1)TextCNN原理 ... -
caffe python接口:用训练好的模型来分类
2017-11-20 15:55:32经过前面两篇博文的学习,我们已经训练好了一个caffemodel模型,并生成了一个deploy.prototxt文件,现在我们就利用这两个文件来对一个新的图片进行分类预测。 我们从mnist数据集的test集中随便找一张图片,用来进行... -
caffe的python接口学习(6)用训练好的模型caffemodel分类新图片
2018-05-04 10:52:00经过前面两篇博文的学习,我们已经训练好了一个caffemodel模型,并生成了一个deploy.prototxt文件,现在我们就利用这两个文件来对一个新的图片进行分类预测。 我们从mnist数据集的test集中随便找一张图片,用来进行... -
使用Python编程实现对数几率回归模型(不调用现成的对数几率回归函数),并对Iris数据集进行分类以验证模型...
2020-12-27 15:20:21使用Python编程实现对数几率回归模型(不调用现成的对数几率回归函数),并对Iris数据集进行分类以验证模型的效能导入数据集数据划分训练模型损失函数结果展示源码分享 导入数据集 利用sklern.datasets已有的load_... -
python与机器学习(七)上——PyTorch搭建LeNet模型进行MNIST分类
2021-02-15 23:23:50任务要求:利用PyTorch框架搭建一个LeNet模型,并针对MNIST数据集进行训练和测试。 数据集:MNIST 导入: import torch from torch import nn, optim from torch.autograd import Variable from torch.nn import ... -
python进行图像识别与分类_Python构建图像分类识别器的方法
2020-12-13 10:21:40机器学习用在图像识别是非常有趣的话题。我们可以利用OpenCV强大的功能结合机器学习算法实现图像识别系统。首先,输入若干图像,加入分类标记。利用向量量化方法将特征点进行聚类,并...最后,利用训练好的ERF模型后... -
基于jupyter notebook的python编程-----猫狗数据集的阶段分类得到模型精度并进行数据集优化
2020-06-10 20:10:21本次博客内容已经属于目前热门的深度学习目标识别技术,请仔细学习每一行代码,理解训练、测试、数据增加、模型优化这些经典套路,接下来,就带小伙伴进行学习吧! 一、名词解释 1、什么是overfit(过拟合)? 1)、... -
Image_Classifier:此项目使用经过训练的模型对图像进行分类-源码
2021-02-14 16:26:09克隆这个github仓库并安装所有来自requirements.txt python库 在Python终端中运行以下代码 pip install -r requirements.txt $ git clone https://github.com/github/Image_Classifier.git $ cd ImageClassifier ... -
caffe---测试模型分类结果并输出(python )
2016-09-02 18:38:00当训练好一个model之后,我们通常会根据这个model最终的loss和在验证集上的accuracy来判断它...下面就是一个用训练好的模型,来对测试集进行测试,并输出每个样本的分类结果的实现。 代码如下: #coding=utf-... -
【6】caffe的python接口学习:用训练好的模型(caffemodel)来分类新的图片
2018-10-22 19:13:35经过前面两篇博文的学习,我们已经训练好了一个caffemodel模型,并生成了一个deploy.prototxt文件,现在我们就利用这两个文件来对一个新的图片进行分类预测。 我们从mnist数据集的test集中随便找一张图片,用来进行... -
caffe的python接口学习(6):用训练好的模型(caffemodel)来分类新的图片
2018-09-24 16:42:56经过前面两篇博文的学习,我们已经训练好了一个caffemodel模型,并生成了一个deploy.prototxt文件,现在我们就利用这两个文件来对一个新的图片进行分类预测。 我们从mnist数据集的t -
Python数据建模--分类
2020-05-15 10:19:49分类电影分类导入库数据创建创建knn模型,并预测【18,90】在图中展示各电影位置增加数据量进行模型训练图中展示植物分类数据导入并输出数据特征把数字转换为标记名字训练模型并预测 最邻近分类的python实现方法 介绍... -
model:这是一个简单的python项目,具有keras CNN模型和GUI界面,用于选择keras模型并使用图像对其进行测试...
2021-02-27 12:17:51这是一个具有keras CNN模型和GUI接口的简单python项目,用于选择keras模型并测试该模型以对图像进行分类 用法 要训练新模型,您只需要运行train_model.py文件,如果您想更改训练的设置,就需要进行修改,并根据... -
Python-MLClassifier一个用于在浏览器中快速训练图像分类器的UI工具
2019-08-11 07:10:13ML Classifier是机器学习引擎的React前端,用于在浏览器中快速训练图像分类模型。 可以使用单个命令保存模型,并重复使用生成的模型进行图像分类预测。 -
tflite-speech-recognition:用于训练卷积神经网络以对单词进行分类并将模型使用TensorFlow Lite部署到...
2021-02-05 17:57:26此外,它还包含另一个Python示例,该示例使用TensorFlow Lite在经过训练的模型上进行推理,以识别Raspberry Pi上的口头单词“停止”。 可以在以下位置找到说明这些程序如何工作以及如何使用它们的完整文章: 以下... -
《深度学习——实战caffe》——python接口学习(6):用训练好的模型(caffemodel)来分类新的图片
2018-06-12 20:59:31经过前面两篇博文的学习,我们已经训练好了一个caffemodel模型,并生成了一个deploy.prototxt文件,现在我们就利用这两个文件来对一个新的图片进行分类预测。我们从mnist数据集的test集中随便找一张图片,用来进行... -
USA_UFGSM:重新采用经过预训练的模型进行健壮的域外少量学习-源码
2021-03-02 07:38:55重新利用预训练的模型进行鲁棒的域外少量学习 与模型无关的元学习(MAML)是少数学习的一种流行方法,但假设我们可以使用元训练集。 实际上,由于数据隐私问题,知识产权问题或仅缺乏计算资源,在元训练集上进行训练... -
python logisticregression_python – sklearn LogisticRegression并更改分类的默认阈值
2020-12-14 01:24:51我为我的分类器建立了一条ROC曲线,结果证明我的训练数据的最佳阈值大约为0.25.我假设创建预测时的默认阈值是0.5.如何进行10倍交叉验证时,如何更改此默认设置以了解模型的准确度?基本上,我希望我的模型能够为大于... -
入门系列之Scikit-learn在Python中构建机器学习分类器
2021-02-24 22:15:28机器学习的重点是训练算法以学习模式并根据数据进行预测。机器学习特别有价值,因为它让我们可以使用计算机来自动化决策过程。在本教程中,您将使用Scikit-learn(Python的机器学习工具)在Python中实现一个简单的...