python机器学习相关的操作 numpy,GridSearchCV(网格搜索)等

2023-11-16

numpy切片操作
视频讲解
numpy 简单入门
GridSearchCV的简单使用视频讲解
SVM参数优化
metrics中的precision_score,recall_score,accuracy_score

import numpy as np
# genfromtxt是一种导入数据的方式,数据加载的时候能够处理丢失数据
data = np.genfromtxt("./data/spam.data",delimiter=" ")
# numpy的切片操作!!!
# 取行
# numpy的切片操作根普x通的列表不同,例如data[0,1]取的是第0行,1列的数据
# 而data[0:2:1]表示从第0行取到第1行,间隔为1
# data[[1,3,5]] 取 1 3 5 索引行
# 取列
# data[行,列]
# data[:,1]取第一列
# data[:,[1,2,3]]取1,2,3列
x = data[:,:-1] # 取除最后一列的所有数据
y = data[:,-1] # 取最后一列数据

关于GridSearch的使用和SVM交叉验证

if __name__ == '__main__':
    test_classifiers = ['NB', 'KNN', 'LR', 'RF', 'DT', 'SVM', 'GBDT']
    # 这里测试了朴素贝叶斯,k近邻,逻辑回归,随机森林,支持向量机等五种方法
    classifiers = {'NB': naive_bayes_classifier,
                   'KNN': knn_classifier,
                   'LR': logistic_regression_classifier,
                   'RF': random_forest_classifier,
                   'SVM': svm_classifier,
                   }
    print("训练集的规模:",x_train.shape)
    print("测试集的规模",x_test.shape)
    print("*"*28+"下面开始测试"+"*"*28)
    for classifier in classifiers:
        print("*"*28+classifier+"*"*28)
        time1 = time.time()
        test_model = classifiers[classifier](x_train,y_train)
        timeAll = time.time() - time1
        print("training time: %.4fs"%(timeAll))
        # 预测的数据
        predict = test_model.predict(x_test)
        '''
        精确率是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是真正的正样本。
        那么预测为正就有两种可能了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP)
        也就是而召回率是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。
        那也有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)。
        其实就是分母不同,一个分母是预测为正的样本数,另一个是原来样本中所有的正样本数。
        讲解网站:https://www.zhihu.com/question/19645541
        '''
        # 可以用metrics来对测试数据的准确度等进行判断,其中 accuracy = model.score
        precision = metrics.precision_score(y_test,predict)
        recalll = metrics.recall_score(y_test,predict)
        print("精确率为:%.2f%% 召回率为:%.2f%%"%(precision*100,recalll*100))
        accuracy = metrics.accuracy_score(y_test,predict)
        print("准确率:%.2f%%  %.2f%%"%(accuracy*100,100*test_model.score(x_test,y_test))) # accuracy就是跟正确率一样

    # 这里是对SVM的交叉验证方法进行学习测试
    from sklearn.svm import SVC
    from sklearn.model_selection import GridSearchCV
    from sklearn.preprocessing import StandardScaler

    # 创建svm模型
    model = SVC(kernel='rbf',probability=True)
    # 进行标准化处理
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)
    '''  !!!!注意这里是用网格搜索找出最优参数!!!!!   '''
    # 1.找出参数有可能的值,并写在param_grid字典当中
    C = []
    for i in range(-5,15+1,2):
        C.append(2**i)
    gama = []
    for i in range(-15,3+1,2):
        gama.append(2**i)
    param_grid = { 'C':C , 'gamma':gama}
    # 2.进行网格搜索,需要调用GridSearchCV
    grid_search = GridSearchCV(model,param_grid,cv=5,n_jobs=1,verbose=1) # 输出训练过程
    # 3.训练数据
    grid_search.fit(x_train, y_train)
    best_parameters = grid_search.best_params_
    # 4.可以输出最优参数下模型评分,最优模型,最优模型在第几个
    print("best_index",grid_search.best_index_)
    print("best_score",grid_search.best_score_)
    print("best_params", grid_search.best_params_)
    print("best_estimator",grid_search.best_estimator_)
    # 5.将最优参数写入模型当中
    model = SVC(kernel='rbf',probability=True,C=best_parameters['C'],gama = best_parameters['gama'])
    model.fit(x_train,y_train)
    predict = model.predict(x_test)
    # 当分类的y不止0 1的时候,也就是多任务分类。
    #可在添加 metrics.precision_score(x_test,predict,,average= 'macro')
    precision = metrics.precision_score(x_test,predict)
    recalll = metrics.recall_score(x_test,predict)
    accuracy = metrics.accuracy_score(x_test,predict)
    print("*"*28+"svm_cross_validation"+"8"*28)
    print("精确度:%.2f%%  召回率: %.2f%%"%(precision*100,recalll*100))
    print("准确度:%.2f%%"%(accuracy*100))

numpy.unique

在这里插入图片描述

pandas获取列名

获取pandas列名的几种方法

import pandas as pd

row = ["a","b","c"]
cols = ["琼楼","玉宇","飞天"]
df = pd.DataFrame(index=row,columns=cols)
print(type(df.columns.values))
print(df.columns.values)
if "琼楼" in df.columns.values:
    print("Yes")

pandas让内容全部显示

#显示所有列
pd.set_option('display.max_columns', None)

#显示所有行
pd.set_option('display.max_rows', None)

#设置value的显示长度为100,默认为50
pd.set_option('max_colwidth',100)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python机器学习相关的操作 numpy,GridSearchCV(网格搜索)等 的相关文章

随机推荐

  • Linux和Windows下使用Syslog库

    本文档描述如何在Windows和Linux下使用Syslog库 在Linux下GNU库中已经自带有syslog库 但是在Windows下的标准库中没有syslog库 从网上可以找到syslog的开源代码实现 接口函数基本上与Linux一致
  • 高精度运算c++

    高精度运算c 前言 加法 减法 乘法 除法 求余 全部代码 完 前言 采用c 的stl库实现高精度的加减乘除 以及求余运算 希望可以帮助到大家 加法 string add big string a string b string 加 str
  • String和基本数据类型的比较方式

    package com test author xlj 简单的比较方式 public class Test public static void main String args System out println 192 168 101
  • springboot项目启动时:Failed to retrieve application JMX service URL

    application properties配置有问题 检查即可
  • Cannot find any provider supporting AES/CBC/PKCS5Padding

    1 出现的问题 java lang RuntimeException java security NoSuchAlgorithmException Cannot find any provider supporting AES CBC PK
  • Elastic Search 安装部署最全教程(Docker)

    一 部署单点ES 1 首先创建网络 因为我们还需要部署kibana容器 因此需要让es和kibana容器互联 这里先创建一个网络 docker network create es net 2 加载镜像 docker pull elastic
  • 刀片服务器 如何增加硬盘,IBM为刀片服务器添加新SAS及固态硬盘

    在调整过X64产品线后 我们又收到IBM将为服务器产品线添加新SAS硬盘及固态硬盘的消息 上周IBM刚发布了一款小尺寸的SAS硬盘 它只有2 5英寸 而之前的硬盘基本上都是3 5英寸的SCSI硬盘 因为IBM拥有世界上最好的硬盘研究和生产工
  • 疯壳4900、7072心率血压血氧心电四合一智能手表&模组电容触摸实现

    触摸 该手表的触摸是由RH6015C触摸IC完成的 该IC是一款内置稳压模块的单通道电容式触摸感应控制开关 IC 可以替代传统的机械式开关 RH6015可在有介质 如玻璃 亚克力 塑料 陶瓷等 隔离保护的情况下实现触摸功能 安全性高 RH6
  • delete 和 delete []的真正区别

    c 中对new申请的内存的释放方式有delete和delete 两种方式 到底这两者有什么区别呢 1 我们通常从教科书上看到这样的说明 delete 释放new分配的单个对象指针指向的内存 delete 释放new分配的对象数组指针指向的内
  • ubuntu下解决wps2019缺少字体问题

    准备字体包 链接 https pan baidu com s 1rsqn3CY SWS KWaKc0w83g 提取码 h9cs 复制 解压后的wps symbol fonts zip到 home usr share fonts下 sudo
  • 西门子PLC—用 SCL 编写你的第一个 TIA 代码

    前言 使用梯形图编写程序时 博途编辑器是通过网络段 把程序分成一段一段的 编辑器可以插入若干个网络段 每一个网络段可以有各自的注释 而SCL是文本语言 不分网络段 在LAD FBD语言内增加SCL的除外 这就需要需要用其他的方法来 解决程序
  • 面试总结大全

    预定义变量 0 脚本名 所有的参数 所有的参数 参数的个数 当前进程的PID 上一个后台进程的PID 上一个命令的返回值 0表示成功 for 循环次数是固定的 for i in 取值 范围 1 20 zhangsan lisi wanger
  • 牛客网——华为题库(41~50)

    华为题库 41 称砝码 42 学英语 43 迷宫问题 44 Sudoku 45 名字的漂亮度 46 截取字符串 48 从单向链表中删除指定值的节点 50 四则运算 41 称砝码 include
  • C++通过回车结束循环输入

    试想一个案例 假设需要你输入n行数字 而每一行输入的数字数量都未知 不定 如何通过C 来实现这一操作 本贴笔者给出一个具体案例 首先规定输入的行数 而后在每一行输入不定量的数字 最后将每一个数字对应的值 以及与其匹配的行数输出 例如 输入
  • 实战07- 模型融合:利用AdaBoost元算法提高分类性能

    元算法 meta algorithm 是对其他算法进行组合的一种方式 即模型融合 模型融合主要分为三种 Bagging Boosting和Stacking 思想 将弱分类器融合成强分类器 融合后比最强的弱分类器更好 视频导学 https w
  • 什么是高防CDN,高防CDN是如何防御网络攻击的呢?

    高防CDN是一种新型的网络构建法式 N是构建在现有网络基础之上的智能虚拟网络 依靠部署在各地的边缘服务器 通过中心平台的负载均衡 内容分发 调度等功能模块 使用户就近获取所需内容 降低网络拥塞 提高用户访问响应速度和命中率 CDN的关键技术
  • tensorflow2.1.0安装

    原来一直用1 x的tf 最近安装2 初始源error无法安装 下载本地包后 换清华源之类的 channels defaults show channel urls true default channels https mirrors tu
  • 机器学习(一)

    文章目录 人工智能 人工智能的诞生 人工智能的发展历程 人工智能与机器学习的关系 机器学习 机器学习的发展历程 讨论 机器学习的必要性 机器学习的定义 机器学习的三要素 机器学习的基本概念 作业 人工智能 人工智能的诞生 人工智能诞生于一群
  • Spring Boot项目中使用 TrueLicense 生成和验证License(服务器许可)

    一 简介 License 即版权许可证 一般用于收费软件给付费用户提供的访问许可证明 根据应用部署位置的不同 一般可以分为以下两种情况讨论 应用部署在开发者自己的云服务器上 这种情况下用户通过账号登录的形式远程访问 因此只需要在账号登录的时
  • python机器学习相关的操作 numpy,GridSearchCV(网格搜索)等

    numpy切片操作 视频讲解 numpy 简单入门 GridSearchCV的简单使用视频讲解 SVM参数优化 metrics中的precision score recall score accuracy score import nump