機器學習 數據集

數據集

  • 1. scikit-learn工具介紹
    • 1.1 scikit-learn安裝
    • 1.2 Scikit-learn包含的內容
  • 2 數據集
    • 2.1 sklearn玩具數據集介紹
    • 2.2 sklearn現實世界數據集介紹
    • 2.3 sklearn加載玩具數據集
      • 示例1:鳶尾花數據
      • 示例2:分析糖尿病數據集
    • 2.4 sklearn獲取現實世界數據集
      • 示例:獲取20分類新聞數據
    • 2.5數據集的劃分
      • (1) 函數
      • (2)示例
        • 列表數據集劃分
        • 二維數組數據集劃分
        • DataFrame數據集劃分
        • 字典數據集劃分
        • 鳶尾花數據集劃分
        • 現實世界數據集劃分

1. scikit-learn工具介紹

在這里插入圖片描述

  1. Python語言機器學習工具
  2. Scikit-learn包括許多智能的機器學習算法的實現
  3. Scikit-learn文檔完善,容易上手,豐富的API接口函數
  4. Scikit-learn官網:https://scikit-learn.org/stable/#
  5. Scikit-learn中文文檔:https://scikitlearn.com.cn/
  6. scikit-learn中文社區

1.1 scikit-learn安裝

參考以下安裝教程:https://www.sklearncn.cn/62/

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-learn

1.2 Scikit-learn包含的內容

在這里插入圖片描述

2 數據集

2.1 sklearn玩具數據集介紹

數據量小,數據在sklearn庫的本地,只要安裝了sklearn,不用上網就可以獲取
在這里插入圖片描述

2.2 sklearn現實世界數據集介紹

數據量大,數據只能通過網絡獲取
在這里插入圖片描述

2.3 sklearn加載玩具數據集

示例1:鳶尾花數據

from sklearn.datasets import load_iris
iris = load_iris()#鳶尾花數據

鳶尾花數據集介紹

特征有:

? 花萼長 sepal length

? 花萼寬sepal width

? 花瓣長 petal length

? 花瓣寬 petal width

三分類:

? 0-Setosa山鳶尾

? 1-versicolor變色鳶尾

? 2-Virginica維吉尼亞鳶尾

  • sklearn.datasets.load_iris():加載并返回鳶尾花數據集

在這里插入圖片描述
sklearn數據集的使用
sklearn數據集返回值介紹
load和fetch返回的數據類型datasets.base.Bunch(字典格式)

data:特征數據數組,是[n_samples * n_features]的二維numpy.ndarry數組
target:標簽數組,是n_samples的一維numpy.ndarry數組
DESCR:數據描述
feature_names:特征名,新聞數據,手寫數字、回歸數據集沒有
target_names:標簽名
代碼如下:

#獲取鳶尾花數據集的庫
from sklearn.datasets import load_iris
import numpy as np
import pandas as pd
# 獲取鳶尾花數據集
iris=load_iris()
# iris字典中有幾個重要屬性: 
# data 特征
data=iris.data
# print('鳶尾花數據集的前5條數據',data[:5])
'''[[5.1 3.5 1.4 0.2][4.9 3.  1.4 0.2][4.7 3.2 1.3 0.2][4.6 3.1 1.5 0.2][5.  3.6 1.4 0.2]]'''# feature_names 特征描述
feature_names=iris.feature_names
print(feature_names)#['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
# target  目標
target=iris.target
# 獲取前五條數據的目標值
print(target[:5])# [0 0 0 0 0]
# target_names  目標描述
target_names=iris.target_names
print(target_names) #['setosa(山鳶尾)' 'versicolor(變色鳶尾花)' 'virginica(維基利亞鳶尾)']
# DESCR 數據集的描述
res=iris.DESCR
print(res)
# filename 下后到本地保存后的文件名
iris_filename=iris.filename
print(iris_filename)#iris.csv

示例2:分析糖尿病數據集

這是回歸數據集,有442個樣本,有可能就有442個目標值。
代碼如下:

# 獲取糖尿病數據集的庫
from sklearn.datasets import load_diabetes
import numpy as np
import pandas as pd
dia=load_diabetes()
# print(dia)
data=dia.data
# print('糖尿病數據的特征的前五條',data[:5])
'''
糖尿病數據的特征的前五條 [[ 0.03807591  0.05068012  0.06169621  0.02187239 -0.0442235  -0.03482076-0.04340085 -0.00259226  0.01990749 -0.01764613][-0.00188202 -0.04464164 -0.05147406 -0.02632753 -0.00844872 -0.019163340.07441156 -0.03949338 -0.06833155 -0.09220405][ 0.08529891  0.05068012  0.04445121 -0.00567042 -0.04559945 -0.03419447-0.03235593 -0.00259226  0.00286131 -0.02593034][-0.08906294 -0.04464164 -0.01159501 -0.03665608  0.01219057  0.02499059-0.03603757  0.03430886  0.02268774 -0.00936191][ 0.00538306 -0.04464164 -0.03638469  0.02187239  0.00393485  0.015596140.00814208 -0.00259226 -0.03198764 -0.04664087]]
'''
#獲取特征名
feature_names=dia.feature_names
print(feature_names) #['age', 'sex', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6']
#獲取目標值
target=dia.target
print(target[:5]) #[151.  75. 141. 206. 135.]
#獲取目標名
# target_names=dia.target_names
# print(target_names[:5]) 因為糖尿病數據集是回歸的,所以它的目標值是線上的點沒有對應的名稱
#獲取糖尿病的描述
res=dia.DESCR
# print(res)

注意:

  • 因為糖尿病數據集是回歸的,所以它的目標值是線上的點沒有對應的名稱

2.4 sklearn獲取現實世界數據集

(1)所有現實世界數據,通過網絡才能下載后,默認保存的目錄可以使用下面api獲取。實際上就是保存到home目錄

from sklearn import datasets
datasets.get_data_home()  #查看數據集默認存放的位置

(2)下載時,有可能回為網絡問題而出問題,要“小心”的解決網絡問題,不可言……

(3)第一次下載會保存的硬盤中,如果第二次下載,因為硬盤中已經保存有了,所以不會再次下載就直接加載成功了。

示例:獲取20分類新聞數據

(1)使用函數: sklearn.datasets.fetch_20newsgroups(data_home,subset)

(2)函數參數說明:

(2.1) data_home

None這是默認值,下載的文件路徑為 “C:/Users/ADMIN/scikit_learn_data/20news-bydate_py3.pkz”
自定義路徑例如 “./src”, 下載的文件路徑為“./20news-bydate_py3.pkz”

(2.2) subset

“train”,只下載訓練集
“test”,只下載測試集
“all”, 下載的數據包含了訓練集和測試集

(2.3) return_X_y,決定著返回值的情況

False,這是默認值
True,

(3) 函數返值說明:

當參數return_X_y值為False時, 函數返回Bunch對象,Bunch對象中有以下屬性*data:特征數據集, 長度為18846的列表list, 每一個元素就是一篇新聞內容, 共有18846篇*target:目標數據集,長度為18846的數組ndarray, 第一個元素是一個整數,整數值為[0,20)*target_names:目標描述,長度為20的list*filenames:長度為18846的ndarray, 元素為字符串,代表新聞的數據位置的路徑當參數return_X_y值為True時,函數返回值為元組,元組長度為2, 第一個元素值為特征數據集,第二個元素值為目標數據集

代碼

import sklearn.datasets as datasets
from sklearn.datasets import fetch_20newsgroups
import numpy as np
import pandas as pd
path=datasets.get_data_home()
news=fetch_20newsgroups(data_home='./src',subset='all')
# print(news.data[0])
# print(news.target_names[:5])data,target=fetch_20newsgroups(data_home='./src',subset='all',return_X_y=True)

2.5數據集的劃分

"""
1. 復習不定長參數
一個"*" 把多個參數轉為元組
兩個"*" 把多個關鍵字參數轉為字典 
"""
def m(*a, **b):print(a)       #('hello', 123)print(b)       #{'name': '小王', 'age': 30, 'sex': '男'}    
m("hello", 123,  name="小王", age=30, sex="男")2. 復習列表值的解析
list = [11,22,33]
a, b, c = list # a=11   b=22  c=33
a, b = ["小王",  30] #a="小王" b=30

(1) 函數

sklearn.model_selection.train_test_split(*arrays,**options)
參數
(1) *array 這里用于接收1到多個"列表、numpy數組、稀疏矩陣或padas中的DataFrame"。	
(2) **options, 重要的關鍵字參數有:test_size 值為0.0到1.0的小數,表示劃分后測試集占的比例random_state 值為任意整數,表示隨機種子,使用相同的隨機種子對相同的數據集多次劃分結果是相同的。否則多半不同strxxxx 分層劃分,填y
2 返回值說明返回值為列表list, 列表長度與形參array接收到的參數數量相關聯, 形參array接收到的是什么類型,list中對應被劃分出來的兩部分就是什么類型

(2)示例

列表數據集劃分

因為隨機種子都使用了相同的整數(22),所以劃分的劃分的情況是相同的。
代碼如下:

# 導入數據集劃分的庫
from sklearn.model_selection import train_test_split
# 1.列表數據集的劃分
x=[1,2,3,4,5,6,7,8,9]#作為特征值
y=['1a','2a','3a','4a','5a','6a','7a','8a','9a']#作為目標值
# x,y的長度要一致
# 直接對特征值進行劃分為訓練集0.8和測試集0.2
x_train,x_test=train_test_split(x,test_size=0.2,shuffle=True,random_state=5)
# shuffle:表示是否打亂,random_state:設置隨機種子
# print(x_train,x_test)#[9, 5, 8, 2, 1, 3, 6] [7, 4]順序是隨機的
# 對特征值和目標值進行劃分為訓練集0.8和測試集0.2
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,shuffle=True,random_state=5)
print(x_train,x_test)#[9, 8, 2, 1, 6, 7, 4] [3, 5]
print(y_train,y_test)#['9a', '8a', '2a', '1a', '6a', '7a', '4a'] ['3a', '5a']
# 劃分時特征值和目標值劃分的位置是一一對應的

注意:

  • 1.x(特征值),y(目標值)的長度要一致
  • 2.劃分時特征值和目標值劃分的位置是一一對應的
二維數組數據集劃分
# 2.二維數組數據集劃分
x=np.arange(16).reshape(4,4)
y=np.arange(0,160,10).reshape(4,4)
# print(x)
# print(y)
# x,y的長度要一致
# 直接對特征值進行劃分為訓練集0.8和測試集0.2
x_train,x_test=train_test_split(x,test_size=0.2,shuffle=True,random_state=5)
# shuffle:表示是否打亂,random_state:設置隨機種子
# print(x_train,x_test)#[9, 5, 8, 2, 1, 3, 6] [7, 4]順序是隨機的
# 對特征值和目標值進行劃分為訓練集0.8和測試集0.2
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,shuffle=True,random_state=5)
print(x_train)
print("="*20)
print(x_test)
print("="*20)
print(y_train)
print("="*20)
print(y_test)
'''
[[ 4  5  6  7][ 8  9 10 11][12 13 14 15]]
====================
[[0 1 2 3]]
====================
[[ 40  50  60  70][ 80  90 100 110][120 130 140 150]]
====================
[[ 0 10 20 30]]
'''
DataFrame數據集劃分

可以劃分DataFrame, 劃分后的兩部分還是DataFrame

x= np.arange(1, 16, 1)
x.shape=(5,3)
df = pd.DataFrame(x, index=[1,2,3,4,5], columns=["one","two","three"])
# print(df)x_train,x_test = train_test_split(df,  test_size=0.4, random_state=22)
print("\n", x_train)
print("\n", x_test)
'''one  two  three
4   10   11     12
1    1    2      3
5   13   14     15one  two  three
2    4    5      6
3    7    8      9
'''
字典數據集劃分

可以劃分非稀疏矩陣

用于將字典列表轉換為特征向量。這個轉換器主要用于處理類別數據和數值數據的混合型數據集

1.對于類別特征DictVectorizer 會為每個不同的類別創建一個新的二進制特征,如果原始數據中的某個樣本具有該類別,則對應的二進制特征值為1,否則為0。

2.對于數值特征保持不變,直接作為特征的一部分

這樣,整個數據集就被轉換成了一個適合機器學習算法使用的特征向量形式
代碼如下:

# 字典數據集的劃分
# 引入字典向量化的模塊
from sklearn.feature_extraction import DictVectorizer
from sklearn.model_selection import train_test_split
# 創建一個字典
data = [{'city':'成都', 'age':30, 'temperature':20}, {'city':'重慶','age':33, 'temperature':60}, {'city':'北京', 'age':42, 'temperature':80},{'city':'上海', 'age':22, 'temperature':70},{'city':'成都', 'age':72, 'temperature':40},]
# 將字典進行向量化并轉換為稀疏矩陣
transfer=DictVectorizer(sparse=True)
# 將data進行向量化
data_new=transfer.fit_transform(data)
# print("data_new\n",data_new)
'''
<Compressed Sparse Row sparse matrix of dtype 'float64'with 15 stored elements and shape (5, 6)>Coords        Values(0, 0)        30.0(0, 3)        1.0(0, 5)        20.0(1, 0)        33.0(1, 4)        1.0(1, 5)        60.0(2, 0)        42.0(2, 2)        1.0(2, 5)        80.0(3, 0)        22.0(3, 1)        1.0(3, 5)        70.0(4, 0)        72.0(4, 3)        1.0(4, 5)        40.0
'''
data=data_new.toarray()
# print(x,type(x))
'''
[[30.  0.  0.  1.  0. 20.][33.  0.  0.  0.  1. 60.][42.  0.  1.  0.  0. 80.][22.  1.  0.  0.  0. 70.][72.  0.  0.  1.  0. 40.]] <class 'numpy.ndarray'>'''
x=data[:,:5]
y=data[:,5]
# print(x)
# print(y)
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,shuffle=True,random_state=42)
print(x_train.shape,x_test.shape)
print(y_train.shape,y_test.shape)
print(y_train)
'''
(4, 5) (1, 5)
(4,) (1,)
[40. 80. 20. 70.]
'''

注意:

  • 因為機器學習時只能對數字進行處理字典中不是數字的鍵不能直接處理,需要進行特征處理(向量化就是把他轉化為數字)
鳶尾花數據集劃分

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
x,y=load_iris(return_X_y=True)
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,shuffle=True,random_state=42)
print(x_train.shape,x_test.shape)
print(y_train.shape,y_test.shape)
print(y_train)
'''
(120, 4) (30, 4)
(120,) (30,)
[0 0 1 0 0 2 1 0 0 0 2 1 1 0 0 1 2 2 1 2 1 2 1 0 2 1 0 0 0 1 2 0 0 0 1 0 12 0 1 2 0 2 2 1 1 2 1 0 1 2 0 0 1 1 0 2 0 0 1 1 2 1 2 2 1 0 0 2 2 0 0 0 12 0 2 2 0 1 1 2 1 2 0 2 1 2 1 1 1 0 1 1 0 1 2 2 0 1 2 2 0 2 0 1 2 2 1 2 11 2 2 0 1 2 0 1 2]'''
現實世界數據集劃分
from sklearn.datasets import fetch_20newsgroups
from sklearn.model_selection import train_test_split
import numpy as np
news = fetch_20newsgroups(data_home=None, subset='all')
list = train_test_split(news.data, news.target,test_size=0.2, random_state=22)
# """
# 返回值是一個list:其中有4個值,分別為訓練集特征、測試集特征、訓練集目標、測試集目標
# 與iris相同點在于x_train和x_test是列表,而iris是
# """
x_train, x_test, y_train, y_test = list
#打印結果為: 15076 3770 (15076,) (3770,)
print(len(x_train), len(x_test), y_train.shape, y_test.shape)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/80657.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/80657.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/80657.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux-c語言串口程序

c語言串口程序 // C library headers #include <stdio.h> #include <string.h>// Linux headers #include <fcntl.h> // Contains file controls like O_RDWR #include <errno.h> // Error integer and strerror() function #include <termios.h&g…

TCP IP

TCP/IP 通信協議&#xff0c;不是單一協議&#xff0c;是一組協議的集合 TCP IP UDP 1.建立鏈接 三次握手 第一步&#xff1a;客戶端發送一個FIN報文&#xff0c;SEQX,等待服務器回應 第二步&#xff1a;服務器端受到&#xff0c;發送ackx1,seqy, 等待客戶端回應 第三步&am…

用uniapp在微信小程序實現畫板(電子簽名)功能,使用canvas實現功能

效果&#xff1a; 功能&#xff1a;實現重簽 退出 保存 等功能 解決的問題: 電子簽名畫布抖動問題解 注意&#xff1a; 保存的時候上傳到自己的服務器地址&#xff0c;后端返回圖片地址 代碼&#xff1a; <template><view><view class"signature&qu…

機器學習經典算法:用決策樹原理優化新能源汽車續航能力

?? “用決策樹重構新能源車能量大腦!算法推導+代碼實戰全解,續航暴增15%” 決策樹算法就像我們生活中做決策的 “流程指南”,通過層層判斷得出最終結論。比如你去超市買水果,站在琳瑯滿目的貨架前,就不自覺地用上了決策樹思維。首先,你可能會想 “今天想吃酸的還是甜的…

【Unity中的數學】—— 四元數

一、四元數的定義&#x1f60e; 四元數是一種高階復數&#xff0c;是一個四維空間的概念&#xff0c;相對于復數的二維空間。它可以表示為 q s i x j y k z q s ix jy kz qsixjykz&#xff0c;其中 s s s、 x x x、 y y y、 z z z 都是實數&#xff0c;并且滿足 i …

macOS 15.4.1 Chrome不能訪問本地網絡

前言 最近使用macmini m4&#xff0c;自帶macOS15系統&#xff0c;對于開發者簡直是一言難盡&#xff0c;Chrome瀏覽器的本地網絡有bug&#xff0c;可以訪問本機&#xff0c;但是不能訪問路由器上的其他機器&#xff0c;路由器提供的頁面也不能訪問&#xff0c;如下是折騰解決…

瀏覽器刷新結束頁面事件,調結束事件的接口(vue)

瀏覽器刷新的時候&#xff0c;正在進行中的事件結束掉&#xff0c;在刷新瀏覽器的時候做一些操作。 如果是調接口&#xff0c;就不能使用axios封裝的接口&#xff0c;需要使用原生的fetch。 找到公共的文件App.vue 使用window.addEventListener(‘beforeunload’, function (e…

TCP/IP 模型每層的封裝格式

TCP/IP 模型是一個四層網絡架構&#xff0c;每一層在數據傳輸時都會對數據進行封裝&#xff0c;添加相應的頭部&#xff08;和尾部&#xff09;信息。以下是各層的封裝格式及關鍵字段說明&#xff1a; 1. 應用層&#xff08;Application Layer&#xff09; 封裝格式&#xff1a…

【行業深度解析】什么是馬甲包?

在 Android 應用分發和增長運營的實踐中&#xff0c;“馬甲包” 是一個常被提及的策略術語。特別是在 Google Play 平臺上&#xff0c;許多開發者或運營團隊出于營銷、風險分攤或生態布局等原因&#xff0c;會選擇通過發布“馬甲包”來實現多元化的業務拓展。 然而&#xff0c…

谷歌與微軟的AI戰爭:搜索、云服務與生態布局

谷歌與微軟的AI戰爭&#xff1a;搜索、云服務與生態布局 系統化學習人工智能網站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目錄 谷歌與微軟的AI戰爭&#xff1a;搜索、云服務與生態布局摘要引言技術路線對比1. AI基礎設施&#xff1a;算力…

uniapp自定義導航欄搭配插槽

<uni-nav-bar dark :fixed"true" shadow background-color"#007AFF" left-icon"left" left-text"返回" clickLeft"back"><view class"nav-bar-title">{{ navBarTitle }}</view><block v-slo…

無人機飛控算法開發實戰:從零到一構建企業級飛控系統

簡介 無人機飛控算法是實現穩定飛行和精確控制的核心技術,涉及飛行動力學建模、傳感器數據處理、狀態估計和控制策略等多個環節。本實戰指南將系統講解四旋翼無人機飛控算法的開發流程,包括飛行動力學模型建立、傳感器校準與數據融合、主流控制算法實現(PID、ADRC、EKF)以…

p2p虛擬服務器

ZeroTier Central ? 推薦工具&#xff1a;ZeroTier&#xff08;免費、穩定、跨平臺&#xff09; ZeroTier 可以幫你把多臺設備&#xff08;無論是否跨網&#xff09;加入一個虛擬局域網&#xff0c;彼此間可以像在同一個 LAN 中通信&#xff0c;UDP 視頻、文件傳輸、SSH 等都…

MySQL數據庫遷移SQL語句指南

MySQL數據庫遷移SQL語句指南 一、基礎遷移方法 1. 使用mysqldump進行全量遷移 -- 導出源數據庫&#xff08;在命令行執行&#xff09; mysqldump -u [源用戶名] -p[源密碼] --single-transaction --routines --triggers --events --master-data2 [數據庫名] > migration…

畫立方體軟件開發筆記 js three 投影 參數建模 旋轉相機 @tarikjabiri/dxf導出dxf

gitee&#xff1a; njsgcs/njsgcs_3d mainwindow.js:4 Uncaught SyntaxError: The requested module /3dviewport.js does not provide an export named default一定要default嗎 2025-05-10 14-27-58 專門寫了個代碼畫立方體 import{ scene,camera,renderer} from ./3dviewp…

【工具】HandBrake使用指南:功能詳解與視頻轉碼

HandBrake使用指南&#xff1a;功能詳解與視頻轉碼 一、前言 高清視頻在當下日益普及&#xff0c;從影視制作到個人拍攝&#xff0c;從社交媒體發布到遠程教育&#xff0c;如何高效地壓縮、轉換和管理視頻文件的體積與清晰度&#xff0c;成為內容創作者與技術開發者的核心任務…

Docker容器網絡架構深度解析與技術實踐指南——基于Linux內核特性的企業級容器網絡實現

第1章 容器網絡基礎架構 1 Linux網絡命名空間實現原理 1.1內核級隔離機制深度解析 1.1.1進程隔離的底層實現 通過clone()系統調用創建新進程時&#xff0c;設置CLONE_NEWNET標志位將觸發內核執行以下操作&#xff1a; 內核源碼示例&#xff08;linux-6.8.0/kernel/fork.c&a…

SAP 交貨單行項目含稅金額計算報cx_sy_zerodivide處理

業務背景&#xff1a;SAP交貨單只有數量&#xff0c;沒有金額&#xff0c;所以開發報表從訂單的價格按數量計算交貨單的金額。 用戶反饋近期報表出現異常&#xff1a; ****2012/12/12 清風雅雨 規格變更 Chg 修改開始 ** 修改原因:由于余數為0時&#xff0c;可能會報錯溢出。…

【高數上冊筆記01】:從集合映射到區間函數

【參考資料】 同濟大學《高等數學》教材樊順厚老師B站《高等數學精講》系列課程 &#xff08;注&#xff1a;本筆記為個人數學復習資料&#xff0c;旨在通過系統化整理替代厚重教材&#xff0c;便于隨時查閱與鞏固知識要點&#xff09; 僅用于個人數學復習&#xff0c;因為課…

每日算法刷題 Day3 5.11:leetcode數組2道題,用時1h(有點慢)

5.LC 零矩陣(中等) 面試題 01.08. 零矩陣 - 力扣&#xff08;LeetCode&#xff09; 思想: 法一: 利用兩個集合分別儲存要清0的行和列索引 另外兩種原地優化空間的做法暫時不是目前刷題目標&#xff0c;故不考慮 代碼 c: class Solution { public:void setZeroes(vector&l…