基于Python的简单机器学习模型,使用sklearn库的SVM和使用Keras库的深度神经网络

2023-11-02

SVM

import pandas
from sklearn import svm
import numpy as np

# 读取测试集和测试集
train_data = pandas.read_csv("GroundTruth_and_Features_train.csv")
test_data = pandas.read_csv("GroundTruth_and_Features_test.csv")

clf = svm.SVC(kernel='linear')  # 参数 kernel 为线性核函数
predictors = ['Feature1', 'Feature2', 'Feature3', 'Feature4', 'Feature5', 'Feature6', 'Feature7', 'Feature8',
              'Feature9', 'Feature10', 'Feature11', 'Feature12', 'Feature13', 'Feature14', 'Feature15', 'Feature16',
              'Feature17', 'Feature18', 'Feature19', 'Feature20', 'Feature21', 'Feature22', 'Feature23', 'Feature24',
              'Feature25', 'Feature26', 'Feature27', 'Feature28', 'Feature29', 'Feature30', 'Feature31', 'Feature32',
              'Feature33', 'Feature34', 'Feature35']
trian_predictors = (train_data[predictors])
train_target = train_data['Label']
# 训练分类器
clf.fit(trian_predictors, train_target)

predictions = []
test_predictions = clf.predict(test_data[predictors])
predictions.append(test_predictions)
predictions = np.concatenate(predictions, axis=0)
predictions[predictions > 0.5] = 1
predictions[predictions <= 0.5] = 0
accuracy = sum(predictions[predictions == test_data['Label']]) / len(predictions)
print('准确率为', end='')
print(accuracy * 100, end='')
print('%')

Keras深度神经网络

from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.optimizers import RMSprop
import pandas as pd
import numpy as np
import os

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

# 读取数据并初始化
train_data = pd.read_csv("GroundTruth_and_Features_train.csv")
test_data = pd.read_csv("GroundTruth_and_Features_test.csv")

predictors = ['Feature1', 'Feature2', 'Feature3', 'Feature4', 'Feature5', 'Feature6', 'Feature7', 'Feature8',
              'Feature9', 'Feature10', 'Feature11', 'Feature12', 'Feature13', 'Feature14', 'Feature15', 'Feature16',
              'Feature17', 'Feature18', 'Feature19', 'Feature20', 'Feature21', 'Feature22', 'Feature23', 'Feature24',
              'Feature25', 'Feature26', 'Feature27', 'Feature28', 'Feature29', 'Feature30', 'Feature31', 'Feature32',
              'Feature33', 'Feature34', 'Feature35']
trian_features = (train_data[predictors])  # 训练特征集
test_features = (test_data[predictors])  # 测试特征集
train_label = train_data['Label']  # 训练标签集
test_label = test_data['Label']  # 测试标签集

# 传入的训练特征和标签是Numpy数组,需要转化
trian_features_list = trian_features.values.tolist()
test_features_list = test_features.values.tolist()
train_label_list = train_label.values.tolist()
test_label_list = test_label.values.tolist()

# 转化为numpy矩阵
trian_features_list = np.array(trian_features_list)
test_features_list = np.array(test_features_list)

# 将类向量转化为类矩阵
train_label_list = np_utils.to_categorical(train_label_list, num_classes=2)
test_label_list = np_utils.to_categorical(test_label_list, num_classes=2)

# 搭建网络结构
model = Sequential([
    Dense(32, input_dim=35),  # 输入35个特征
    Activation('relu'),
    Dense(2),  # 分类为二分类
    Activation('softmax')  # 调用softmax进行分类
])

# 函数优化器,设定学习率、θ、超参、学习率衰减率
rmsprop = RMSprop(
    learning_rate=0.001,
    rho=0.9,
    epsilon=1e-08,
    decay=0.0
)

# 配置网络训练方法
model.compile(
    optimizer=rmsprop,  # 优化器使用函数形式RMSprop
    loss='categorical_crossentropy',  # 损失函数
    metrics=['accuracy'],  # 最终评价指标
)

print("训练中")
model.fit(trian_features_list, train_label_list)  # 训练模型
print("测试中")
loss, accuracy = model.evaluate(test_features_list, test_label_list)  # 评估准确率
print("准确率为:", accuracy)
model.summary()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Python的简单机器学习模型,使用sklearn库的SVM和使用Keras库的深度神经网络 的相关文章

随机推荐

  • fork函数讲解及代码分析

    fork 函数 fork 的基础知识 父进程通过调用fork函数来创建一个新的运行的子进程 父进程和子进程之间最大的区别就是PID不同 1 在父进程中 fork返回新创建子进程的PID 2 在子进程中 fork返回0 3 如果出现错误 fo
  • 自动控制原理(四)

    根轨迹分析法 概述 根轨迹的概念 根轨迹的绘制 基本规则和步骤 特征方程 确定根轨迹的方向 起点和终点 根轨迹的分支数 根轨迹的连续性和对称性 实轴上根轨迹的分布 根轨迹的渐近线 根轨迹的分离 会合点 根轨迹与虚轴的交点 根轨迹的入射角和出
  • 第十一章从零玩转系列之微信支付实战PC端我的订单接入退款取消接口

    一 前言 欢迎来到本期的博客 本期将会讲解如何接入微信支付的退款和取消订单接口 本篇文章将是PC端的最后一个文章啦 之后将会是UniApp的篇章感受移动端的诱惑吧 本次为前端知识点如果不懂前段可以去仓库直接copy出来使用 如果有什么问题可
  • android ----- goldfish内核编译

    学习总纲 Android10 硬件抽象层 HAL 概要介绍和学习计划 编译环境 android 版本 android 10 0 0 r41 架构 aosp x86 64 eng 内核分支 android goldfish 4 14 gchi
  • 反射相关

    转载请注明出处 亲class hello public static void main String args Class
  • warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失...

    问题 Visual Studio 出现warning C4819 该文件包含不能在当前代码页 936 中表示的字符 请将该文件保存为 Unicode 格式以防止数据丢失 解决方案 1 修改字符编码格式 推荐 Visual Studio提供高
  • QT中使用嵌入窗口

    文章目录 需求 实现 1 在主界面中添加一个 treeWidget 2 响应树形控件点击事件 添加右侧布局 3 效果 4 改进 固定右侧布局的高度 多个右侧布局的切换 使用UI文件 第一种非常简单 添加新文件时 选择 Qt设计师界面类 第二
  • js 运算符

    JS 运算符 要进行各种各样的运算 就要使用不同的运算符号 1 算术运算符 A 10 20 A 10 20 A 10 20 A 10 20 1 取余运算符 两个数相除 取余数 A 10 3 A 1 如果余数不为0 则两个不能整除 A 10
  • linux的ping命令含义,Linux ping命令详解

    Linux系统的ping命令是常用的网络命令 它通常用来测试与目标主机的连通性 基于IMCP协议 常见命令参数 q 不显示任何传送封包的信息 只显示最后的结果 n 只输出数值 R 记录路由过程 c count 总次数 i 时间间隔 t 存活
  • 数字森林:无人机航测技术在林业调查中的应用

    林业调查是林业工作的基础 对于森林资源的管理 规划 保护 经济发展和农业种植等方面都具有重要的意义 传统林业调查主要依赖人工进行 存在工作效率低 数据精度低 数据分析困难 受地形限制 无法实时监测等缺陷 随着科技的不断发展 无人机作为一种高
  • Spring学习—Spring中定时器实现

    Spring学习 Spring中定时器实现 在一些工作需要使用到定时器 Spring很好的集成了定时器的功能 在Spring 中使用Quartz 本文介绍Spring3 0以后自主开发的定时任务工具 spring task 可以将它比作一个
  • 在程序里面执行system(“cd /某个目录“),为什么路径切换不成功?

    粉丝提问 彭老师 问下 在程序里面执行system cd 某个目录 这样会切换不成功 为啥呢 实例代码 粉丝的疑惑是明明第10行执行了cd media操作 为什么12行执行的pwd gt test2 txt 结果提示的仍然是当前目录 这是一
  • linux 配置多个tomcat同时运行

    1 Linux系统下怎样配置多个Tomcat同时运行呢 首先修改变量为第一个tomcat 然后修改第二个tomcat启动的脚本 工程1 tomcat1 export CATALINA BASE data server tomcat expo
  • 10003---BootStrap网格系统

    Bootstrap 提供了一套响应式 移动设备优先的流式网格系统 随着屏幕或视口 viewport 尺寸的增加 系统会自动分为最多12列 什么是网格 Grid 摘自维基百科 在平面设计中 网格是一种由一系列用于组织内容的相交的直线 垂直的
  • edgewin10无法安装_win10内置Edge浏览器遇到“您未安装FLASH控件”如何解决

    win10系统在使用Edge浏览器时可能会遇到 您未安装FLASH控件 的提示 如下图所示 这到底是怎么回事 一方面可能是你的电脑确实没有安装FLASH插件 另一方面可能是由于浏览器禁止的FLASH插件的运行 如果没安装就下载 要是还是无法
  • 快递100 java 示例API 返回结果乱码 之替代方案

    快递100官方给出的java 版示例API无法使用 返回结果全是乱码 只能自己写一个 采用httpClient 不采用官方给出的URL方式 返回结果编码方式为UTF 8 import java io InputStream import j
  • vue的v-if,v-show,动态组件,keep-alive

    v if 如果条件不成立 不会渲染当前指令所在节点的dom元素 如果需要频繁切换显示隐藏的元素 使用v if则会出现频繁新增删除节点 在性能上代价比较高 注意 最好不要v for和v if同时使用 v for会比v if的优先级高 如果连用
  • get/post请求常见content-type种类

    HTTP 请求分为三个部分 状态行 请求头 消息主体 在HTTP协议的消息头中 通常使用Content Type来表示传值的内容的格式 服务端根据Content Type字段对获取消息主体的编码方式对消息解析 get 方法中 通过param
  • js延迟加载的六种方式

    1 defer 属性 HTML 4 01 为
  • 基于Python的简单机器学习模型,使用sklearn库的SVM和使用Keras库的深度神经网络

    SVM import pandas from sklearn import svm import numpy as np 读取测试集和测试集 train data pandas read csv GroundTruth and Featur