呆板学习底子知识使用总结

[复制链接]
发表于 2025-10-24 11:28:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
数据科学


  •         AI
  •         ML
  •         DL (deep learning)
  •         Maths& statistics
  •         visualization
  •         EDA

1.datascience
  1. import numpy as np
  2. """
  3. numpy :数学计算库,主要用于数组计算
  4. """
  5. print(np.__version__)
  6. #ndarry数组的创建与基本操作#
  7. #将列表转换为数组
  8. arr= np.array([1,2,3,4,5])
  9. print(arr)
  10. print(arr.itemsize)
  11. #创建等差数列数组
  12. arr=np.arange(0,10,2)  #从0开始,到10结束(不包含10),步长为2
  13. print(arr)
  14. print("############################################")
  15. #数组基本属性:shape (形状),dtype (数据类型)
  16. arr=np.array([[1,2,3],[4,5,6]]) #输出(2,3),表示二维数组,第一维有2个元素,第二维有3个元素
  17. print(arr.shape)
  18. print(arr.dtype)
  19. #最小维度
  20. a = np.array([1,2,3,4,5],ndmin=2)
  21. print(a)
复制代码
  1. import os
  2. import pandas as pd
  3. import matplotlib.pyplot as plt
  4. """
  5. pandas库主要用于数据分析(清洗,转换,分析,可视化)
  6.   
  7.   功能:
  8.    1.数据清洗:处理缺失数据、重复数据
  9.    2.数据转换:改变数据的形状,结构或格式
  10.    3.数据分析:进行统计分析、聚合、分组
  11.    4.数据可视化:通过整合matplotlib等库进行数据可视化
  12.   数据结构:
  13.       1.Series:一维数据,由 index,Name,values组成
  14.       2.DataFrame:表格型的数据结构,含有一组有序的列,每列可以是不同的值类型(数值,字符串、布尔值)组;
  15.                    DataFrame即有行索引也有列索引,可以被看做由Series组成的字典(共同用一个索引);
  16.                    DataFrame由Index、Key、Value 组成;
  17. """
  18. #1. series (类似一维数组)#
  19. a = [12, 3, 4]
  20. res = pd.Series(a,name='年龄')
  21. print(res)
  22. print(f"索引2对应的值:{res[2]}")
  23. #查看基本信息
  24. print("索引:",res.index)
  25. print("数据:",res.values)
  26. print("数据类型:",res.dtype)
  27. print("前两行数据:",res.head(2))
  28. #使用map函数将每个元素加倍
  29. res_double=res.map(lambda x:x*2)
  30. print("元素加倍后:",res_double)
  31. #查找缺失值(没有缺失值,全部返回false)
  32. print("缺失值判断:",res.isnull())
  33. #计算累计求和
  34. sum_res=res.cumsum()
  35. print("累计求和:",sum_res)
  36. #排序
  37. sorted_res=res.sort_values()
  38. print("排序后结果为:",sorted_res)
  39. print(res.sum())  # 输出 Series 的总和
  40. print(res.mean())  # 输出 Series 的平均值
  41. print(res.max())  # 输出 Series 的最大值
  42. print(res.min())  # 输出 Series 的最小值
  43. print(res.std())  # 输出 Series 的标准差
  44. print("=====================series (类似一维数组) end===========================")
  45. #2.DataFrame表格 (存在数据)#
  46. plt.rcParams['font.family'] = 'SimHei'  # 替换为你选择的字体
  47. mydataset={
  48.     "sites": ["google","Runoob","wiki"],
  49.     "number": [1,2,3]
  50. }
  51. df = pd.DataFrame(mydataset)    #绘图:填充数据
  52. df.plot(kind='bar',x='sites',y='number',figsize=(8, 5))
  53. plt.title("i'm title标题")
  54. plt.xlabel("x sites")
  55. plt.ylabel("y number")
  56. plt.show()
  57. print("=====================DataFrame表格  end ===========================")
  58. #3.合并2个 Series对象成一个DataFrame#
  59. series_apple=pd.Series([1,2,7,4])
  60. series_banana=pd.Series([2,6,3,5])
  61. df=pd.DataFrame({'Apples':series_apple,'Bananas':series_banana})
  62. #显示dataFrame
  63. print(df)
  64. print("=====================合并2个 Series对象成一个DataFrame  end ===========================")
  65. #4.dataframe#
  66. data = {
  67.     'Name': ['alice','bob','charlies','david'],
  68.     'Age': [25,30,35,40],
  69.     'City': ['New York','Los Angeles','Chicago','Huston']
  70. }
  71. df=pd.DataFrame(data)
  72. print(df.head(2)) #查看前两行数据
  73. print(df.info()) #查看dataframe基本信息
  74. print(df.describe()) #获取描述统计信息
  75. print("================================================")
  76. #按年龄排序
  77. df_sorted= df.sort_values(by='Age',ascending=False)
  78. print(df_sorted)
  79. print("================================================")
  80. #选择指定列
  81. print(df[['Name',"Age"]])
  82. print("================================================")
  83. #按照索引选择行
  84. print(df.iloc[1:3]) #选择第二到第三行
  85. print("================================================")
  86. #分组统计,按城市分组,计算平均年龄
  87. print(df.groupby('City')['Age'].mean())
  88. print("================================================")
  89. #处理缺失值(填充缺失值)
  90. df['Age']=df['Age'].fillna(70)
  91. print("路径:",os.getcwd())
  92. #导出为cvs文件
  93. df.to_csv('./data/output.csv',index=False)  # 导出时不导出index列
  94. print("=====================导出csv成功===========================")
  95. #读取cvs文件数据,加载为DataFrame
  96. df=pd.read_csv("./data/vgsales.csv")
  97. #print(df.to_string())  #显示dataframe读取到的所有数据
  98. print(df.head(10)) #读取前10行数据
  99. print(df.tail(10)) #读取尾10行数据
  100. print("=====================dataframe end===========================")
  101. #5. pandas excel
  102. df=pd.read_excel('./data/transactions.xlsx') #读取excel表单数据
  103. print(df)
  104. df=pd.read_excel('./data/transactions.xlsx',sheet_name='Sheet2',skiprows=0) #读取指定sheet名字的数据
  105. print(df)
  106. print("=====================pandas excel end===========================")
  107. #6.pandas JSON
  108. df = pd.read_json('./data/sites.json')
  109. print(df.to_string())
  110. data=[
  111.    {
  112.    "id": "A001",
  113.    "name": "菜鸟教程",
  114.    "url": "www.runoob.com",
  115.    "likes": 61
  116.    },
  117.    {
  118.    "id": "A002",
  119.    "name": "Google",
  120.    "url": "www.google.com",
  121.    "likes": 124
  122.    },
  123.    {
  124.    "id": "A003",
  125.    "name": "淘宝",
  126.    "url": "www.taobao.com",
  127.    "likes": 490
  128.    }
  129. ]
  130. df=pd.DataFrame(data)
  131. print(df)
  132. print("=====================pandas JSON end===========================")
  133. #7.数据清洗#
  134. person = {
  135.   "name": ['Google', 'Runoob', 'Runoob', 'Taobao'],
  136.   "age": [50, 40, 40, 23]
  137. }
  138. df = pd.DataFrame(person)
  139. print(df.duplicated())  #查找是否有重复值:有 true,否则 false
  140. print(df.drop_duplicates()) #删除重复值
  141. print("=====================数据清洗 end===========================")
  142. # dfs=pd.read_html('https://www.runoob.com')
  143. # df=dfs[0]
  144. # print("result:",df.columns)
复制代码
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. """
  4. matplotlib 是python的绘图库,主要用于绘制各种静态、动态、交互式的图表,
  5. 可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。
  6. """
  7. # print(mat.__version__)
  8. # xpoints = np.array([0,6])
  9. # ypoints = np.array([0,100])
  10. #plt.plot(xpoints,ypoints)
  11. #plt.scatter(xpoints,ypoints)
  12. #plt.bar(xpoints,ypoints)
  13. # plt.hist(xpoints,ypoints)
  14. # plt.show()
  15. # plt.rcParams['font.family'] = 'SimHei'  # 替换为你选择的字体
  16. #
  17. # ypoints=np.array([1,3,4,5,8,9,6,1,3,4,5,2,4])
  18. # plt.plot(ypoints,'+:r')
  19. # #plt.plot(ypoints,marker='*')
  20. # plt.title("i'm title标题")
  21. # plt.xlabel("x girl")
  22. # plt.ylabel("y boy")
  23. # plt.show()
  24. #绘制正余弦
  25. # x= np.arange(0,4*np.pi,0.1) # start ,stop,step
  26. # y=np.sin(x)
  27. # z=np.cos(x)
  28. # plt.plot(x,y,x,z)
  29. # plt.show()
  30. #网格线
  31. # x=np.array([1,2,3,4])
  32. # y=np.array([1,4,9,16])
  33. #
  34. # plt.title("grid Test")
  35. # plt.xlabel("x-label")
  36. # plt.ylabel("y-label")
  37. # plt.plot(x,y)
  38. # plt.grid()
  39. # plt.show()
  40. #绘制多图
  41. #plot1
  42. # xpoints=np.array([0,6])
  43. # ypoints=np.array([0,100])
  44. # plt.subplot(1,2,1)
  45. # plt.plot(xpoints,ypoints)
  46. # plt.title("plot1")
  47. #
  48. # #plot2
  49. # x=np.array([1,2,3,4])
  50. # y=np.array([1,4,9,16])
  51. # plt.subplot(1,2,2)
  52. # plt.plot(x,y)
  53. # plt.title("plot2")
  54. #
  55. # plt.suptitle("subplot test")
  56. # plt.show()
  57. #散点图
  58. # x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
  59. # y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
  60. # colors=np.array(["red","green","black","orange","purple","beige","cyan","magenta"])
  61. # plt.scatter(x,y,c=colors)
  62. # plt.show()
  63. #绘制柱形图
  64. # x=np.array(["test1","test2","test3","test4"])
  65. # y=np.array([12,22,6,18])
  66. # plt.bar(x,y,color = "#4CAF50")
  67. # plt.show()
  68. #绘制饼状图
  69. y=np.array([35,25,15,15])
  70. plt.pie(y,
  71.         labels=['A','B','C','D'],
  72.         colors=["#d5695d", "#5d8ca8", "#65a479", "#a564c9"]
  73.         )
  74. plt.title("title heha")
  75. plt.show()
  76. #保存图像数据#
  77. # img=np.random.rand(10,10,3)
  78. # #绘制图像
  79. # plt.imshow(img)
  80. # #显示图像
  81. # plt.show()
  82. # #保存图像数据
  83. # plt.imsave("./data/test.png",img)
  84. #读取图像文件数据#
  85. img=plt.imread('./data/img.png')
  86. plt.imshow(img)
  87. plt.show()
复制代码
2.呆板学习                                                                                                                                         
  





  1. import sklearn
  2. from sklearn.datasets import load_iris
  3. from sklearn.model_selection import train_test_split
  4. from sklearn.pipeline import Pipeline
  5. from sklearn.preprocessing import StandardScaler
  6. from sklearn.svm import SVC
  7. """
  8. Sklearn,全称为 Sklearn,是一个基于 Python的开源机器学习库
  9. Sklearn 适用于各类机器学习任务,如分类、回归、聚类、降维等
  10. """
  11. #验证scikit-learn(机器学习库)是否安装成功
  12. print(sklearn.__version__)
  13. #PipeLine 使用#
  14. #1.加载数据
  15. data= load_iris()
  16. x,y= data.data,data.target
  17. #2.将数据集划分为训练集和测试集
  18. X_train,X_test,y_train,y_test= train_test_split(x,y,test_size=0.2,random_state=42)
  19. #3.创建PipeLine
  20. pipeline= Pipeline([
  21.     ('scaler',StandardScaler()), #数据标准化
  22.     ('svc',SVC()) #支持向量机分类
  23. ])
  24. #4.训练模型
  25. pipeline.fit(X_train,y_train)
  26. #5.预测结果
  27. y_pred=pipeline.predict(X_test)
  28. #6.打印模型精度
  29. print(f"Model accuracy:{pipeline.score(X_test,y_test)}")
复制代码
  1. import pandas as pd
  2. from sklearn.tree import DecisionTreeClassifier
  3. from sklearn.model_selection import train_test_split
  4. from sklearn.metrics import accuracy_score
  5. """
  6. 机器学习利用模型预测结果步骤
  7. """
  8. #1.导入数据
  9. music_data=pd.read_csv('./data/music.csv')
  10. #music_data
  11. #2.清洗数据
  12. x=music_data.drop(columns=['genre'])  #删除列
  13. y = music_data['genre']  #获取一列数据
  14. #3.分隔数据成训练的数据集
  15. x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2)
  16. #4.创建模型
  17. model= DecisionTreeClassifier()
  18. model.fit(x,y)
  19. #5.利用模型预测结果
  20. predictions=model.predict(x_test)
  21. #predictions
  22. # 6.计算准确的结果
  23. score=accuracy_score(y_test,predictions)
  24. score
复制代码
  1. import pandas as pd
  2. from sklearn.tree import DecisionTreeClassifier
  3. import joblib
  4. """
  5. 持久化模型
  6. """
  7. #1.导入数据
  8. music_data=pd.read_csv('./data/music.csv')
  9. #2.清洗数据
  10. x=music_data.drop(columns=['genre'])  #删除列
  11. y = music_data['genre']  #获取一列数据
  12. #4.创建模型
  13. model= DecisionTreeClassifier()
  14. model.fit(x,y)
  15. #5.存储训练的模型
  16. joblib.dump(model,'./data/music-recommender.joblib')
  17. #6.利用模型预测结果
  18. #predictions=model.predict([[21,1]])
复制代码
  1. import pandas as pd
  2. from sklearn.tree import DecisionTreeClassifier
  3. import joblib
  4. """
  5.    加载训练模型
  6. """
  7. #加载训练的music模型#
  8. model=joblib.load('./data/music-recommender.joblib')
  9. #利用训练的模型预测结果
  10. predictions=model.predict([[21,1]])
  11. print("加载训练模型,预测结果为:")
  12. for obj in predictions:
  13.     print(obj)
复制代码
  1. import pandas as pd
  2. from sklearn.tree import DecisionTreeClassifier
  3. from sklearn import tree
  4. """
  5. 绘图显示模型
  6. """
  7. #导入数据
  8. music_data=pd.read_csv('./data/music.csv')
  9. #.清洗数据
  10. x=music_data.drop(columns=['genre'])  #删除列
  11. y = music_data['genre']  #获取一列数据
  12. #创建模型
  13. model= DecisionTreeClassifier()
  14. model.fit(x,y)
  15. #绘图显示模型
  16. tree.export_graphviz(model,
  17.                      out_file='./data/music-recommer.dot',#out_file:以何种图像语言描述
  18.                      feature_names=['age','gender'],
  19.                      class_names=sorted(y.unique()),
  20.                      label='all',
  21.                      rounded=True, #四舍五入
  22.                      filled=True
  23.                      )  
  24. 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
  1. from  torch.utils.data.dataset import Dataset
  2. from PIL import Image
  3. import os
  4. """
  5. 创建一个Dataset步骤
  6.    定义一个MyData类继承Dataset,实现getitem和len方法来读取数据和返回数据数量
  7.   注意:
  8.   1. __init__方法中,需要传入root_dir和label_dir参数,分别表示数据集根路径和所需label路径
  9.   2. __getitem__方法中,需要返回img和label,img为PIL Image格式的图片,label为图片所对应的label
  10.   3. __len__方法中,返回数据集的图片数量
  11.   """
  12. class MyData(Dataset):
  13.     def __init__(self,root_dir,label_dir):
  14.         self.root_dir = root_dir
  15.         self.label_dir = label_dir
  16.         self.path=os.path.join(self.root_dir,self.label_dir)
  17.         self.img_path=os.listdir(self.path)
  18.     def __getitem__(self, idx):
  19.         img_name= self.img_path[idx]
  20.         img_item_path=os.path.join(self.root_dir,self.label_dir,img_name)
  21.         img=Image.open(img_item_path)
  22.         label= self.label_dir
  23.         return img,label
  24.     def __len__(self):
  25.         return len(self.img_path)
  26. root_dir= "./dataset/train"
  27. ants_label_dir="ants_image"
  28. bees_label_dir="bees_image"
  29. ants_dataset= MyData(root_dir,ants_label_dir)
  30. bees_dataset= MyData(root_dir,bees_label_dir)
  31. #拼接两个数据集
  32. train_dataset= ants_dataset + bees_dataset
  33. print(len(train_dataset))
  34. #显示制定的图片
  35. img,label = train_dataset[243]
  36. img.show()
复制代码
  1. import os
  2. """
  3. 重命名数据集标签
  4. """
  5. root_dir="./dataset/train"
  6. target_dir="ants_image"
  7. img_path=os.listdir(os.path.join(root_dir,target_dir))
  8. label=target_dir.split('_')[0]
  9. out_dir="ants_label"
  10. for i in img_path:
  11.     filename=i.split('.jpg')[0]
  12.     with open(os.path.join(root_dir,out_dir,"{}.txt".format(filename)),'w') as f:
  13.         f.write(label)
复制代码
  1. from torch.utils.tensorboard import SummaryWriter
  2. #使用SummaryWriter写日志日志
  3. writer = SummaryWriter("logs")
  4. for i in range(100):
  5.     writer.add_scalar("y=2x",3*i,i)
  6. writer.close()
  7. """
  8. tensorboard使用
  9. 1.查看logs文件方法:
  10.    terminal中 执行 tensorboard --logdir=pytorchDemo/logs 命令;
  11.    点击访问地址:默认本地http://localhost:6006
  12. """
复制代码
运行下令:tensorboard --logdir=logs ,tensonboard表现如下:



回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表