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为图片所对应的label3. __len__方法中,返回数据集的图片数量"""
class MyData(Dataset):def __init__(self,root_dir,label_dir):self.root_dir = root_dirself.label_dir = label_dirself.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_dirreturn img,labeldef __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显示如下: