K近邻值(KNN)小麦种类预测 预测年收入是否大于50K美元 癌症预测

个人收入预测——决策树详解 Dataset 决策树的一个优点是它可以处理变量之间有非线性关系的数据,而这种数据用前面的线性回归是不能做的。本文的数据集是美国1994年的个人收入信息,这个数据还包含了婚姻状况,年龄以及工作类型等等。目标是要预测他们每年的收入与50k的关系{<=50:0,>50:1} import pandas income = pandas.read_csv("income.csv") print(inco 阅读详情

知识点梳理:

小麦种类预测:
打乱分离集和结果集,源码办法
年收入预测:
样本字符串转数字
癌症预测:
打乱分离集和结果集自带函数,样本数据归一化

文章中数据下载

一、小麦种类预测

1)处理数据

1、导入数据

samples = pd.read_table('./data/wheats.tsv',header=None)
samples

samples.shape
(210, 8)    #共210个样本数据

2、打乱分离训练集和结果集

samples = np.random.permutation(210)  #打乱210个样本的顺序,样本的值不变

samples.iloc[:,0:7]
data = samples.iloc[:,:-1]  # 从 最开始 到 最后的 最后的取不到 
target = samples[7]  # df直接传入索引 是对列的索引
target

3、提取训练集和测试集

训练集为190个之前的
测试集为190个之后的

X_train = data[:190]
y_train = target[:190]
# 测试数据
X_test = data[190:]
y_test = target[190:]

2)创建训练模型并训练

knn = KNeighborsClassifier(n_neighbors=13)  #测试得到n_neighbors = 13的测试准确率较大
knn.fit(X_train,y_train)

3)使用模型预测结果

y_ = knn.predict(X_test)

4)查看模型准确率

knn.score(X_test,y_test)

0.9

二、预测年收入是否大于50K美元

1)处理数据

1、导入数据

df = pd.read_csv('./data/adults.csv')
df

df.shape
(32561, 15)    #共32561个样本数据

2、获取特征与目标值

data = df.loc[:,['age','education','occupation','hours_per_week']]   #特征

target = df['salary']   #目标值

3、数据处理

data
这里的数据类型为字符串,机器不能处理这些数据,我们应将这些数据转换为数字

将所有字符串的列,转换成相应的值让机器去学习

这里写图片描述

levels = data['education'].unique()
levels   #输出所有的不重复的种类

array(['Bachelors', 'HS-grad', '11th', 'Masters', '9th', 'Some-college',
       'Assoc-acdm', 'Assoc-voc', '7th-8th', 'Doctorate', 'Prof-school',
       '5th-6th', '10th', '1st-4th', 'Preschool', '12th'], dtype=object)
levels=='Bachelors'

array([ True, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False])

np.argwhere()
通过np.argwhere找到这一项 在levels中的索引号 这个索引号就是编号 把找到的编号返回即可

np.argwhere(levels=='Bachelors')

array([[0]], dtype=int64)

定义一个函数,将这些类转换为相应的索引值,这样就把字符串的各个类转换为数字,供机器学习。

def str2int(item):
return np.argwhere(levels==item)[0,0]

在通过map()函数将我们定义好的函数去处理每一个值,将其转换为数字。

data.education = data.education.map(str2int)  #将data里education这一列中的所有元素经过str2int函数处理
data.dtypes

age                int64
education          int64  #这样,字符串就会转换成数字类型。
occupation        object
hours_per_week     int64
dtype: object

4、将处理数据封装为函数

函数功能:传入DataFrame和要转换的列的名字 就把这个列的字符串变成数值

def transform_dtype(df,column_name):
    # 看看传入的df中指定的这一列 有哪些独特的值
    u = df[column_name].unique()
    def str2int(item):
        return np.argwhere(u==item)[0,0]
    # 传入的df的指定列 使用map做映射
    df[column_name] = df[column_name].map(str2int)

4、使用我们定义好的函数处理其他未处理的数据

transform_dtype(data,'occupation')
data.dtypes

age               int64
education         int64
occupation        int64
hours_per_week    int64
dtype: object

这样我们就将所有的字符串类型转换成了数字类型

5、提取训练数据和预测数据

X_train = data[:30000]  #前三万条数据进行训练
y_train = target[:30000]
X_test = data[30000:]  #后三万条数据进行测试
y_test = target[30000:]

6、

7、

8、

2)创建训练模型并训练

knn = KNeighborsClassifier()
knn.fit(X_train,y_train)

3)使用模型预测结果

y_ =knn.predict(X_test)
y_

4)查看模型准确率

knn.score(X_test,y_test)

0.7645450995704803

三、癌症预测

1)处理数据

1、导入数据

cancer = pd.read_table('./data/cancer.tsv')
cancer.head()

df.shape
(569, 32)    #共569个样本数据

2、获取特征与目标值

data = cancer.iloc[:,2:]   # 所有样本的特征列
target = cancer.iloc[:,1]  # 所有样本的标签
# target目标值中,M恶性,B良性,没事儿

3、数据打乱顺序并分为训练集和测试集

from sklearn.model_selection import train_test_split

功能:train_test_split 这个函数直接就可以把 数据集 分成 训练集和测试集 而且还会打乱顺序
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.33,random_state=42)

'''
X 特征数据集
y 结果集合
test_size:测试集占所有数据的比例(其他的就是训练集)
random_state:打乱顺续的程度

返回值:分别是X_train, X_test, y_train, y_test这样的顺序
'''
X_train, X_test, y_train, y_test = train_test_split(data,target,test_size=0.1,random_state=42)

2)创建训练模型并训练

knn = KNeighborsClassifier()
knn.fit(X_train,y_train)

3)使用模型预测结果

y_ = knn.predict(X_test)

4)查看模型准确率

knn.score(X_test,y_test)

0.9649122807017544

5)使用交叉表查看预测值与实际值的个数

y_test.head()

89     B
171    M
366    M
325    B
381    B
Name: Diagnosis, dtype: object
y_

array(['B', 'M', 'M', 'B', 'B', 'B', 'M', 'B', 'B', 'B', 'B', 'B', 'B',
       'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'M', 'B', 'B',
       'M', 'B', 'B', 'M', 'B', 'B', 'M', 'B', 'B', 'B', 'M', 'B', 'B',
       'M', 'M', 'B', 'B', 'B', 'M', 'B', 'B', 'B', 'M', 'B', 'M', 'M',
       'B', 'B', 'B', 'M', 'M'], dtype=object)
pd.crosstab(y_,y_test,rownames=['predict'],colnames=['real'])    #注意,rownames和colnames需要传入列表

real    B   M
predict     
    B   39  1
    M   1   16
# 可以看出真正   (M为恶性  B为良性)
#预测良性,对了39个,错了1个
#预测恶性,对了16个,错了1个

6)将各个范围的值归一化

我们可以看出在data里有的数据值太大,因此会对预测结果产生影响,因此我们将这些值统一成0-1之间的值
实现原理:
这里写图片描述

1、数据归一化处理

这里数据有很多列

data.columns   #列出所有的列

Index(['radius_mean', 'texture_mean', 'perimeter_mean', 'area_mean',
       'smoothness_mean', 'compactness_mean', 'concavity_mean', 'concave_mean',
       'symmetry_mean', 'fractal_mean', 'radius_sd', 'texture_sd',
       'perimeter_sd', 'area_sd', 'smoothness_sd', 'compactness_sd',
       'concavity_sd', 'concave_sd', 'symmetry_sd', 'fractal_sd', 'radius_max',
       'texture_max', 'perimeter_max', 'area_max', 'smoothness_max',
       'compactness_max', 'concavity_max', 'concave_max', 'symmetry_max',
       'fractal_max'],
      dtype='object')

我们将这些列都进行归一化处理

for cols in data.columns:
    # print(cols)
    # data[cols] 是 每一列数据
    data_max = data[cols].max()
    data_min = data[cols].min()
    # data[cols]-data_min 这个Series里面的每一个值都减去data_min
    # 每一个值都这样计算 然后在重新赋值给这一列
    data[cols] = (data[cols]-data_min)/(data_max-data_min)

2、数据打乱顺序并分为训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(data,target,test_size=0.1)

3、创建训练模型并训练

knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train,y_train)

4、使用模型预测测试样本

y_ = knn.predict(X_test)

5、查看准确率

knn.score(X_test,y_test)
0.9473684210526315

6、使用交叉表查看预测值与实际值的个数

pd.crosstab(y_,y_test,rownames=['predict'])
Diagnosis   B   M
predict     
     B      33  3
     M      0   21
# 可以看出真正   (M为恶性  B为良性)
#预测良性,对了33个,错了3个
#预测恶性,对了21个,错了0个
Adult数据集分析(一) 目录 一、研究意义 二、数据集介绍 样本属性及含义 三、数据预处理 (1)模型选择 (2)数据导入 (3)数据删除与清洗 (4)数据转化 (5)重点部分 (6)划分训练集与测试集 四、两种模型对上述数据集进行预测 决策树 朴素贝叶斯 五、结果分析 一、研究意义 如果我们知道对收入高低起决定性的因素,或者哪些因素组合在一起有着能够增大收入 的可能性,那么这样可以帮助很多人少走弯路,朝着正确的方向努力,早日达到目标。 就像许多传授给我们人生智慧的书籍一样,我们的... 阅读详情

相关推荐

案例系列:美国人口普查_预测收入超过50K_TabTransformer二分类

本示例演示了如何使用进行结构化数据分类,TabTransformer是一种用于监督和半监督学习的深度表格数据建模架构。TabTransformer基于自注意力的Transformer构建而成。Transformer层将分类特征的嵌入转换为强大的上下文嵌入,以实现更高的预测准确性。在这里,我们定义数据集的元数据,这些元数据对于读取和解析数据为输入特征以及根据其类型对输入特征进行编码非常有用。# 数值特征的名称列表"age", # 年龄"education_num", # 受教育年限。

数智笔记 1882

KNN实现小麦种子分类问题

1、KNN # -*- coding: utf-8 -*- """ Created on Tue Dec 21 12:16:41 2021 @author: Administrator """ import numpy as np #inx-未知样本(测试集) #dataSet-训练样本(训练集) #labels-训练集分类标签向量 #k-选择距离最小的k个点 #maxType-分类结果 def knn(inX, dataSet,labels,k): dist=(((dataSet-in

wsla1234567890的博客 2310

预测年收入是否大于50K美元--adults.txt

读取adult.txt文件,最后一列是年收入,并使用KNN算法训练模型,然后使用模型预测一个人的年收入是否大于50 获取年龄、教育程度、职位、每周工作时间作为机器学习数据 获取薪水作为对应结果

kaggle-2美国人口普查年收入50K分类

本文主要是使用xgboost, RandomForestClassifier算法实现美国1994年人口普查数据,居民年收入是否超过50K的分类问题。主要内容如下:1 数据预处理 数据信息查看,添加对应的列标签 缺失值处理,以及属性值替换 Ordinal Encoding to Categoricals(string 特征转化为整数编码) 2 模型训练以及验证 xgboost算法分类以及GridS

常思考->有目标->重实践->善反思 2万+

小麦种类预测数据---seeds.tsv

小麦种类预测,用于算法训练数据,方便自己和网友们使用学习,seeds.tsv文件,最后一列是小麦品种,其他列是小麦特征,根据特征来预测品种

数据分析入门所使用的美国人口普查数据及数据说明

这是Coursera的Intro to Data Analysis for Python课程使用的美国人口普查数据,里面包含CSV数据文件和一个PDF说明文件,解释了每个变量的意义。

广州大学机器学习与数据挖掘实验二

实验二 逻辑回归与朴素贝叶斯分类 一、 实验目的 本实验课程是计算机、人工智能、软件工程等专业学生的一门专业课程,通过实验,帮助学生更好地掌握数据挖掘与机器学习相关概念、技术、原理、应用等;通过实验提高学生编写实验报告、总结实验结果的能力;使学生对机器学习模型、算法等有比较深入的认识。要掌握的知识点如下: 掌握机器学习中涉及的相关概念、模型、算法; 熟悉机器学习模型训练、验证、测试的流程; 熟悉常用的数据预处理方法; 掌握逻辑回归、贝叶斯分类的表示、求解及编程。 二、基本要求 实验前,复习《数据挖掘与

faith312的博客 5708

【微信小程序开发与设计】垃圾智能分类小程序

垃圾分类是将来生活可持续发展的必需项。但是很多人由于缺乏垃圾分类知识,或是因为垃圾分类困难,费时费力,所以没有好好贯彻垃圾分类政策,此时设计一款方便于群众进行智能化垃圾识别分类的微信小程序就显得尤为必要。

Markelle_Fultz的博客 8244

【Python机器学习系列】建立决策树模型预测小麦品种(案例+源码)

建立决策树模型预测小麦品种(案例+源码)

数据杂坛 695

使用 DeepSeek 配合 即梦AI 生成视频的详细教程

访问即梦AI官网,选择“AI作图”功能,将DeepSeek生成的提示词逐条粘贴至输入框,选择适配的模型(如“通用XL Pro”)和参数(如画幅比例、风格强度)1113。“我要制作一个关于普洱茶文化的宣传视频,请设计一个30秒的脚本,包含时间轴、画面描述、文案和分镜提示词,以表格形式输出。:云南古茶树群,清晨薄雾,金色晨光,露珠特写,国风山水画质感,16:9画幅,使用Nikon D850参数模拟513。:结合DeepSeek生成的知识点脚本与即梦AI的插画风格,制作科普动画211。

weixin_48995695的博客 3万+

安路科技FPSoC开发实战:从芯片特性到边缘计算应用

本文深入解析安路科技FPSoC芯片在边缘计算领域的开发实战,重点介绍SALDRAGON系列芯片的异构计算架构优势,包括RISC-V/ARM处理器与FPGA的协同工作。通过工业控制和智能视觉应用案例,展示硬件加速实现与低功耗设计技巧,帮助开发者高效利用FPSoC进行边缘计算应用开发。

weixin_29248611的博客 375

预测年收入是否大于50K美元

预测年收入是否大于50K美元 import pandas as pd from sklearn. preprocessing import MinMaxScaler import numpy as np #加载数据 df = pd.read csv( ' . /datasets/adults. txt' ) #样本数据的提取 target = df['salary'] feature = df[['age','education_num','occupation','hours_p..

少年一贯快马扬帆,道阻且长不转弯; 要盛大,要绚烂,要哗然; 要用理想的泰坦尼克,去撞现实的冰川; 要当烧赤壁的风,而非借鉴草船; 要为了一片海,就肯翻万山。 2047

stm32H743IIT6 cubemx HAL USB UVC摄像头基础

stm32性能已经很强了, 可以驱动ov5640摄像头, 所以可以把摄像头接在stm32上, 当作一个摄像头驱动器, 连接到电脑上 开发环境: stm32cubemx 6.0.1 单片机: 自己做的stm32h743iit6核心板,兼容正点原子 学习资料: 圈圈学USB 鱼鹰谈单片机 从零开始学习USBhttps://to-run-away.blog.youkuaiyun.com/article/details/85038393 整个项目是基于CDC串口上修改 1 stm32 USB 代码概览 ..

紫枫洛天的博客 7750

机器学习 day01(三)

练习 1 预测年收入是否大于50K美元 读取adult.txt文件,最后一列是年收入,并使用KNN算法训练模型,然后使用模型预测一个人的年收入是否大于50 1. 读取文件,查看相应的信息 2. 将特征和标签分离 ...

沉觞的博客 799

【ACP】2025-最新-疑难题解析- 练习二汇总

全球加速是优化公网访问的,负载均衡是分发流量的,公网 NAT 网关是处理公网 IP 的,高速通道是建私网连接但不直接提供固定私网地址功能。C 是客户端加密方式,D 是 ECS 云盘加密,都不属于 OSS 服务器端加密。某企业想使用云服务器 ECS + 负载均衡 SLB + 弹性伸缩 (Auto Scaling) 的架构搭建一个企业级门户网站,技术负责人对于负载均衡和弹性伸缩配合使用没有经验,于是将他理解的两种产品配合使用的一些技术细节列成了一个表单,并请作为架构师的您帮他做一下鉴别,以下哪些项是正确的?

jundao1997的专栏 293

CAPL自动化测试

通过本文的学习,读者应该对CAPL自动化测试有了初步的了解,并能够编写复杂的CAPL脚本。在实际项目中,CAPL的应用非常广泛,希望读者能够通过不断的学习和实践,掌握更多的CAPL技巧,提高自己的开发能力。

闲人编程的博客 1526

算法预测实例——预测年收入[特征选取/数据转换str->int]

1、预测年收入是否大于50K美元 读取adult.txt文件,最后一列是年收入,并使用KNN算法训练模型,然后使用模型预测一个人的年收入是否大于50 导包 import pandas as pd from pandas import Series,DataFrame # fit-----&gt;train训练 # predict ----&gt;test测试预测 from sklearn...

Dorisi_H_n_q的博客 7294

优化相机姿态和三维点云的Bundle Adjustment算法及其编程实现

重投影误差是指将优化后的相机姿态和三维点云投影到图像平面上,与对应的图像特征点之间的距离。Bundle Adjustment(捆绑调整)是一种用于同时优化相机姿态和三维点云的算法,它可以提高三维重建和相机定位的精度。下面是一个简单的Python示例代码,演示了如何使用Bundle Adjustment算法优化相机姿态和三维点云的参数。通过以上步骤,Bundle Adjustment算法可以不断地优化相机姿态和三维点云的参数,从而提高重建和定位的精度。Bundle Adjustment算法的编程实现。

CyberXZ的博客 740

K近邻算法——sklearn:预测年收入>50K

sklearn:预测年收入>50K

weixin_46157873的博客 548

手把手教你学pcie--内存管理和保护机制(一):MPU与其他内存管理和保护机制详解

MPU(Memory Protection Unit)是一种专门用于 ​。,这些机制通常协同工作,形成多层防御体系,兼顾安全性、性能和灵活性。

MHD0815的博客 279

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

knn的练习题---小麦种类预测

读取seeds.tsv文件(文件已经上转到本博客下载中心,可免费下载), 最后一列是小麦品种,其他列是小麦特征 导包 import numpy as np import pandas as pd import matplotlib.pyplot as plt 数据获取 seeds = pd.read_csv('./seeds.tsv',sep='\t',header=None) data = seeds.iloc[:,:-1] data = np.array(data) target = seeds.

RogerFedereYY的博客 2573

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Python 机器学习大作业 用knn算法对adult数据集进行50w年薪收入预测

数据分析与机器学习——收入分类 摘 要 今天,人工智能AI已经融入了人类的生活,基本上在生活中能接触到的领域,都有人工智能的身影。而说起人工智能就必定会想到机器学习ML,它以某种方式几乎影响了每个行业,而机器学习最重要的就是算法和数据。本次期末项目基于“人口普查”数据集,对居民收入是否超过50K进行了预测,用的是K临近算法,中间涉及数据填充、删除,K值的选取,‘找邻居’等步骤。完成这个项目后,对K临近算法有了更深刻的理解,也对机器学习更有兴趣了。 关键词:机器学习;Knn算法;预测收入;准确度 一、问题介绍

DZY的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

数据挖掘十大经典算法(8) kNN: k-nearest neighbor classification

邻近算法 KNN算法的决策过程  k-Nearest Neighbor algorithm   右图中,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5,由于蓝色四方形比例为3/5,因此绿

679

用5种分类算法预测小麦种类,比较得分情况

分类算法预测小麦种类,比较各种算法得分情况

不凡De老五 5352

麦子学院深度学习基础 —— 机器学习 —— 最邻近规则分类(K-Nearest Neighbor)KNN 算法应用

麦子学院深度学习基础 —— 机器学习 —— 最邻近规则分类(K-Nearest Neighbor)KNN 算法应用 标签 : 深度学习基础 4.2 最邻近规则分类 KNN 算法应用 1.数据集介绍 鸢尾花数据集: 150 个实例 萼片长度(sepal length)、萼片宽度(sepal width)、花瓣长度(petal length)、花瓣宽度(petal width)。 类别: Iris ...

Harrytsz的博客 642
上一篇: ocr 光学字符识别(Optical Character Recognition)识别数字
下一篇: Python高级--线性回归、岭回归(岭际线)、lasso回归
PyRookie
博客等级 码龄8年 89粉丝 32原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值