机器学习基础知识使用总结

1.datascience

python 复制代码
import numpy as np

"""
numpy :数学计算库,主要用于数组计算

"""


print(np.__version__)
#ndarry数组的创建与基本操作#

#将列表转换为数组
arr= np.array([1,2,3,4,5])
print(arr)
print(arr.itemsize)

#创建等差数列数组
arr=np.arange(0,10,2)  #从0开始,到10结束(不包含10),步长为2
print(arr)
print("############################################")
#数组基本属性:shape (形状),dtype (数据类型)
arr=np.array([[1,2,3],[4,5,6]]) #输出(2,3),表示二维数组,第一维有2个元素,第二维有3个元素
print(arr.shape)
print(arr.dtype)

#最小维度
a = np.array([1,2,3,4,5],ndmin=2)
print(a)
python 复制代码
import os
import pandas as pd
import matplotlib.pyplot as plt

"""
pandas库主要用于数据分析(清洗,转换,分析,可视化)
  
  功能:
   1.数据清洗:处理缺失数据、重复数据
   2.数据转换:改变数据的形状,结构或格式
   3.数据分析:进行统计分析、聚合、分组
   4.数据可视化:通过整合matplotlib等库进行数据可视化
 
  数据结构:
      1.Series:一维数据,由 index,Name,values组成
      2.DataFrame:表格型的数据结构,含有一组有序的列,每列可以是不同的值类型(数值,字符串、布尔值)组;
                   DataFrame即有行索引也有列索引,可以被看做由Series组成的字典(共同用一个索引);
                   DataFrame由Index、Key、Value 组成;
"""



#1. series (类似一维数组)#
a = [12, 3, 4]
res = pd.Series(a,name='年龄')
print(res)
print(f"索引2对应的值:{res[2]}")

#查看基本信息
print("索引:",res.index)
print("数据:",res.values)
print("数据类型:",res.dtype)
print("前两行数据:",res.head(2))

#使用map函数将每个元素加倍
res_double=res.map(lambda x:x*2)
print("元素加倍后:",res_double)
#查找缺失值(没有缺失值,全部返回false)
print("缺失值判断:",res.isnull())
#计算累计求和
sum_res=res.cumsum()
print("累计求和:",sum_res)
#排序
sorted_res=res.sort_values()
print("排序后结果为:",sorted_res)
print(res.sum())  # 输出 Series 的总和
print(res.mean())  # 输出 Series 的平均值
print(res.max())  # 输出 Series 的最大值
print(res.min())  # 输出 Series 的最小值
print(res.std())  # 输出 Series 的标准差

print("=====================series (类似一维数组) end===========================")

#2.DataFrame表格 (存在数据)#
plt.rcParams['font.family'] = 'SimHei'  # 替换为你选择的字体
mydataset={
    "sites": ["google","Runoob","wiki"],
    "number": [1,2,3]
}
df = pd.DataFrame(mydataset)    #绘图:填充数据
df.plot(kind='bar',x='sites',y='number',figsize=(8, 5))
plt.title("i'm title标题")
plt.xlabel("x sites")
plt.ylabel("y number")
plt.show()
print("=====================DataFrame表格  end ===========================")


#3.合并2个 Series对象成一个DataFrame#
series_apple=pd.Series([1,2,7,4])
series_banana=pd.Series([2,6,3,5])
df=pd.DataFrame({'Apples':series_apple,'Bananas':series_banana})
#显示dataFrame
print(df)
print("=====================合并2个 Series对象成一个DataFrame  end ===========================")
 

#4.dataframe#

data = {
    'Name': ['alice','bob','charlies','david'],
    'Age': [25,30,35,40],
    'City': ['New York','Los Angeles','Chicago','Huston']
}
df=pd.DataFrame(data)

print(df.head(2)) #查看前两行数据
print(df.info()) #查看dataframe基本信息
print(df.describe()) #获取描述统计信息
print("================================================")
#按年龄排序
df_sorted= df.sort_values(by='Age',ascending=False)
print(df_sorted)
print("================================================")
#选择指定列
print(df[['Name',"Age"]])
print("================================================")
#按照索引选择行
print(df.iloc[1:3]) #选择第二到第三行
print("================================================")
#分组统计,按城市分组,计算平均年龄
print(df.groupby('City')['Age'].mean())
print("================================================")
#处理缺失值(填充缺失值)
df['Age']=df['Age'].fillna(70)
print("路径:",os.getcwd()) 
#导出为cvs文件

df.to_csv('./data/output.csv',index=False)  # 导出时不导出index列
print("=====================导出csv成功===========================")


#读取cvs文件数据,加载为DataFrame
df=pd.read_csv("./data/vgsales.csv")
#print(df.to_string())  #显示dataframe读取到的所有数据
print(df.head(10)) #读取前10行数据
print(df.tail(10)) #读取尾10行数据


print("=====================dataframe end===========================")

#5. pandas excel
df=pd.read_excel('./data/transactions.xlsx') #读取excel表单数据
print(df)
df=pd.read_excel('./data/transactions.xlsx',sheet_name='Sheet2',skiprows=0) #读取指定sheet名字的数据
print(df)

print("=====================pandas excel end===========================")

#6.pandas JSON
df = pd.read_json('./data/sites.json')
print(df.to_string())

data=[
   {
   "id": "A001",
   "name": "菜鸟教程",
   "url": "www.runoob.com",
   "likes": 61
   },
   {
   "id": "A002",
   "name": "Google",
   "url": "www.google.com",
   "likes": 124
   },
   {
   "id": "A003",
   "name": "淘宝",
   "url": "www.taobao.com",
   "likes": 490
   }
]

df=pd.DataFrame(data)
print(df)

print("=====================pandas JSON end===========================")
#7.数据清洗#
person = {
  "name": ['Google', 'Runoob', 'Runoob', 'Taobao'],
  "age": [50, 40, 40, 23]
}
df = pd.DataFrame(person)
print(df.duplicated())  #查找是否有重复值:有 true,否则 false
print(df.drop_duplicates()) #删除重复值
print("=====================数据清洗 end===========================")

# dfs=pd.read_html('https://www.runoob.com')
# df=dfs[0]
# print("result:",df.columns)
python 复制代码
import matplotlib.pyplot as plt
import numpy as np

"""
matplotlib 是python的绘图库,主要用于绘制各种静态、动态、交互式的图表,
可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。
"""


# print(mat.__version__)

# xpoints = np.array([0,6])
# ypoints = np.array([0,100])

#plt.plot(xpoints,ypoints)
#plt.scatter(xpoints,ypoints)
#plt.bar(xpoints,ypoints)
# plt.hist(xpoints,ypoints)
# plt.show()

# plt.rcParams['font.family'] = 'SimHei'  # 替换为你选择的字体
#
# ypoints=np.array([1,3,4,5,8,9,6,1,3,4,5,2,4])
# plt.plot(ypoints,'+:r')
# #plt.plot(ypoints,marker='*')
# plt.title("i'm title标题")
# plt.xlabel("x girl")
# plt.ylabel("y boy")
# plt.show()


#绘制正余弦
# x= np.arange(0,4*np.pi,0.1) # start ,stop,step
# y=np.sin(x)
# z=np.cos(x)
# plt.plot(x,y,x,z)
# plt.show()

#网格线
# x=np.array([1,2,3,4])
# y=np.array([1,4,9,16])
#
# plt.title("grid Test")
# plt.xlabel("x-label")
# plt.ylabel("y-label")
# plt.plot(x,y)
# plt.grid()
# plt.show()

#绘制多图
#plot1
# xpoints=np.array([0,6])
# ypoints=np.array([0,100])
# plt.subplot(1,2,1)
# plt.plot(xpoints,ypoints)
# plt.title("plot1")
#
# #plot2
# x=np.array([1,2,3,4])
# y=np.array([1,4,9,16])
# plt.subplot(1,2,2)
# plt.plot(x,y)
# plt.title("plot2")
#
# plt.suptitle("subplot test")
# plt.show()


#散点图
# x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
# y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
# colors=np.array(["red","green","black","orange","purple","beige","cyan","magenta"])
# plt.scatter(x,y,c=colors)
# plt.show()

#绘制柱形图
# x=np.array(["test1","test2","test3","test4"])
# y=np.array([12,22,6,18])
# plt.bar(x,y,color = "#4CAF50")
# plt.show()

#绘制饼状图
y=np.array([35,25,15,15])
plt.pie(y,
        labels=['A','B','C','D'],
        colors=["#d5695d", "#5d8ca8", "#65a479", "#a564c9"]
        )
plt.title("title heha")
plt.show()

#保存图像数据#
# img=np.random.rand(10,10,3)
# #绘制图像
# plt.imshow(img)
# #显示图像
# plt.show()
# #保存图像数据
# plt.imsave("./data/test.png",img)


#读取图像文件数据#
img=plt.imread('./data/img.png')
plt.imshow(img)
plt.show()

2.机器学习

python 复制代码
import sklearn
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC

"""
Sklearn,全称为 Sklearn,是一个基于 Python的开源机器学习库
Sklearn 适用于各类机器学习任务,如分类、回归、聚类、降维等
"""

#验证scikit-learn(机器学习库)是否安装成功
print(sklearn.__version__)


#PipeLine 使用#
#1.加载数据
data= load_iris()
x,y= data.data,data.target

#2.将数据集划分为训练集和测试集
X_train,X_test,y_train,y_test= train_test_split(x,y,test_size=0.2,random_state=42)
#3.创建PipeLine
pipeline= Pipeline([
    ('scaler',StandardScaler()), #数据标准化
    ('svc',SVC()) #支持向量机分类
])
#4.训练模型
pipeline.fit(X_train,y_train)
#5.预测结果
y_pred=pipeline.predict(X_test)
#6.打印模型精度
print(f"Model accuracy:{pipeline.score(X_test,y_test)}")
python 复制代码
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
"""
机器学习利用模型预测结果步骤
"""

#1.导入数据
music_data=pd.read_csv('./data/music.csv')
#music_data

#2.清洗数据
x=music_data.drop(columns=['genre'])  #删除列
y = music_data['genre']  #获取一列数据

#3.分隔数据成训练的数据集
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2)
#4.创建模型
model= DecisionTreeClassifier()
model.fit(x,y)
#5.利用模型预测结果
predictions=model.predict(x_test)
#predictions
# 6.计算准确的结果
score=accuracy_score(y_test,predictions)
score
python 复制代码
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
import joblib

"""
持久化模型
"""

#1.导入数据
music_data=pd.read_csv('./data/music.csv')

#2.清洗数据
x=music_data.drop(columns=['genre'])  #删除列
y = music_data['genre']  #获取一列数据

#4.创建模型
model= DecisionTreeClassifier()
model.fit(x,y)
#5.存储训练的模型
joblib.dump(model,'./data/music-recommender.joblib')
#6.利用模型预测结果
#predictions=model.predict([[21,1]])
python 复制代码
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
import joblib

"""
   加载训练模型
"""
#加载训练的music模型#
model=joblib.load('./data/music-recommender.joblib')
#利用训练的模型预测结果
predictions=model.predict([[21,1]])
print("加载训练模型,预测结果为:")
for obj in predictions:
    print(obj)
python 复制代码
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree

"""
绘图显示模型
"""
#导入数据
music_data=pd.read_csv('./data/music.csv')

#.清洗数据
x=music_data.drop(columns=['genre'])  #删除列
y = music_data['genre']  #获取一列数据

#创建模型
model= DecisionTreeClassifier()
model.fit(x,y)

#绘图显示模型
tree.export_graphviz(model,
                     out_file='./data/music-recommer.dot',#out_file:以何种图像语言描述
                     feature_names=['age','gender'],
                     class_names=sorted(y.unique()),
                     label='all',
                     rounded=True, #四舍五入
                     filled=True
                     )  

print("绘图显示模型成功!")

查看xx.dot文件如下:

vscode配置Graphviz和dot语言环境:

1.安装Graphviz (https://www.graphviz.org/)

2.查看dot文件必须给vscode安装vscode-graphviz插件和Graphviz Interactive Preview 插件

3.执行命令:graphviz: open preveiw to the side

3.pytorch

python 复制代码
from  torch.utils.data.dataset import Dataset
from PIL import Image
import os

"""
创建一个Dataset步骤

   定义一个MyData类继承Dataset,实现getitem和len方法来读取数据和返回数据数量

  注意:
  1. __init__方法中,需要传入root_dir和label_dir参数,分别表示数据集根路径和所需label路径
  2. __getitem__方法中,需要返回img和label,img为PIL Image格式的图片,label为图片所对应的label
  3. __len__方法中,返回数据集的图片数量
  """
class MyData(Dataset):
    def __init__(self,root_dir,label_dir):
        self.root_dir = root_dir
        self.label_dir = label_dir
        self.path=os.path.join(self.root_dir,self.label_dir)
        self.img_path=os.listdir(self.path)


    def __getitem__(self, idx):
        img_name= self.img_path[idx]
        img_item_path=os.path.join(self.root_dir,self.label_dir,img_name)
        img=Image.open(img_item_path)
        label= self.label_dir
        return img,label

    def __len__(self):
        return len(self.img_path)

root_dir= "./dataset/train"
ants_label_dir="ants_image"
bees_label_dir="bees_image"

ants_dataset= MyData(root_dir,ants_label_dir)
bees_dataset= MyData(root_dir,bees_label_dir)

#拼接两个数据集
train_dataset= ants_dataset + bees_dataset
print(len(train_dataset))

#显示制定的图片
img,label = train_dataset[243]
img.show()
python 复制代码
import os

"""
重命名数据集标签
"""
root_dir="./dataset/train"
target_dir="ants_image"
img_path=os.listdir(os.path.join(root_dir,target_dir))
label=target_dir.split('_')[0]
out_dir="ants_label"
for i in img_path:
    filename=i.split('.jpg')[0]
    with open(os.path.join(root_dir,out_dir,"{}.txt".format(filename)),'w') as f:
        f.write(label)
python 复制代码
from torch.utils.tensorboard import SummaryWriter

#使用SummaryWriter写日志
writer = SummaryWriter("logs")

for i in range(100):
    writer.add_scalar("y=2x",3*i,i)
writer.close()

"""
tensorboard使用
1.查看logs文件方法:
   terminal中 执行 tensorboard --logdir=pytorchDemo/logs 命令;
   点击访问地址:默认本地http://localhost:6006
"""

运行命令:tensorboard --logdir=logs ,tensonboard显示如下:

相关推荐
mosquito_lover132 分钟前
Python的PyTorch+CNN深度学习技术在人脸识别项目中的应用
pytorch·python·深度学习·cnn
whaosoft-14332 分钟前
51c自动驾驶~合集52
人工智能
liron7134 分钟前
人类驾驶的人脑两种判断模式(反射和预判)-->自动驾驶两种AI模式
人工智能·机器学习
idealmu36 分钟前
PyTorch Lightning 的简单使用示例
人工智能·pytorch·python
m0_748236111 小时前
DeepSeek R1 简易指南:架构、本地部署和硬件要求
人工智能·架构
过期动态1 小时前
【动手学深度学习】基于Python动手实现线性神经网络
人工智能·python·深度学习·神经网络
互联网杂货铺1 小时前
Jmeter基础知识总结
自动化测试·软件测试·python·测试工具·jmeter·职场和发展·测试用例
歌刎2 小时前
DeepSeek开源周Day2:DeepEP - 专为 MoE 模型设计的超高效 GPU 通信库
人工智能·ai·aigc·deepseek
白鹭凡2 小时前
学习大模型开发要学什么
学习·ai·大模型
码界筑梦坊2 小时前
基于大数据的去哪儿网景区可视化及协同过滤推荐系统
大数据·python·信息可视化·flask·毕业设计