当前位置:   article > 正文

※大模型介绍/机器学习函数调用/绘图/读取文件/分析常用代码总结_机器学习代码

机器学习代码

面向AI编程:https://poe.com/chat/2oifh0g5qmmp4by70yj
tensorflow社区模型:https://github.com/tensorflow/models/blob/master/community/README.md

机器学习函数调用代码:
决策树:from sklearn.tree import DecisionTreeRegressor
随机森林:from sklearn.ensemble import RandomForestClassifier
线性回归from sklearn.linear_model import LinearRegression
逻辑回归:from sklearn.linear_model import LogisticRegression
支持向量机:from sklearn.svm import SVC
PCA:from sklearn.decomposition import PCA
K-means聚类:from sklearn.cluster import KMeans
DBSCAN聚类:from sklearn.cluster import DBSCAN
XGboost:from xgboost import XGBClassifier
贝叶斯算法:from sklearn.naive_bayes import GaussianNB

读取文件代码:

#读取CSV文件
data=pd.read_csv("文件名.csv", header=None) 
//header参数:取不取文件头
//sep=' ' 读取以空格分割的文件
//文件读取函数:
def save_new(file_path,save_path):
    # 数据的读入
    guxilv = pd.read_csv("{}".format(file_path), encoding="gbk"
    ,names=column_title, index_col='时间', parse_dates=True)
    # 数据的存取
    guxilv.to_csv("{}".format(save_path))
#取数据后重置索引列
data=data.reset_index(drop=True)
#数据升序排列
data=data.sort_values(by="dteventtime", ascending=True)
#按索引筛选想要的序列
data=data[data.index.isin(inde)]

#读取XLSX文件
data = xlrd.open_workbook("D://文件名.xlsx")    导入xlrd包
sheet0_name=data.sheet_names()[0] #获取第一个表格的名称
worksheet=data.sheet_by_name(sheet0_name)
nrows = worksheet.nrows  #获取行
ncols = worksheet.ncols  #获取列
worksheet.cell_value(i, 0)  #获取具体值

#常规读取文件:(按行读取数据,直到读完。)
with open('xxx.txt', 'r',encoding="utf-8") as f:
    while True:
        line=f.readline()
        if not line:
            break
f.close()

#文件太长情况   显示所有列,以及显示宽度
pd.set_option('display.max_columns', None)
pd.set_option('max_colwidth',100)
创建多维初始值为0的矩阵:
m = [[[0 for i in range(9)] for j in range(9)]for z in range(30)]

#数据集合并
pandas.merge 根据一个或多个键进行连接。
pandas.concat 使对象在轴上进行粘合或“堆叠”。
combine_first 实例方法允许将重叠的数据拼接在一起。

#数据集拼接后打乱顺序重排
import numpy as np
data_true = data[data["label"]==1.0]
data_false = data[data["label"]==0.0]
data_train = data_false[:10000].append(data_true[:10000])
data_train = data_train.reindex(np.random.permutation(data_train.index))
data_train = data_train.reset_index(drop=True)

pd.merge(df1, df2, on="key")
默认情况下,merge做的是内连接,结果中的键是两张表的交集。其他可选的选项
有'left', 'right'和'outer'。外连接是键的并集。
pd.merge(df3, df4, left_on='lkey', right_on='rkey')
pd.merge(df1, df2, how='outer')
merge有一个suffixes后缀选项,用于在左右两边DataFrame对象的重叠列名后指
定需要添加的字符串。

#取字段满足条件的数值
data=data[(data["model"]=="101") | (data["model"]=="401")]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63

绘图常用代码:
matplotlib官方绘图样例文档:https://matplotlib.org/gallery/index.html
模板:

作图之前
import matplotlib.pyplot as plt   #导入作图库
plt.rcParams['font.sans-serif'] = ['SimHei']   #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  #用来正常显示负号
plt.figure(figsize = (7,5), dpi=300)         #创建图像区域,指定比例, 像素
plt.grid(alpha=0.4)  绘制网格, 设置透明度
plt.savefig("/.png")                #保存到本地 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

无子图:

fig = plt.figure()     
ax1 = fig.add_subplot(1, 1, 1)    /一行一列第一列
ax1.plot(X, Y, marker=" ", c=" ")     //绘制X,Y的图像,形状为 marker, 颜色为c

plt.xticks(rotation =   )                     //设置X刻度旋转角度

index1=[1,2,3]
ax1.set_xticks(index1)     [::x]取x为步长
ax1.set_xticklabels(("sunny",  "rainy", "cloudy"))   #依次替换 横坐标索引

plt.xlabel()          //设置X轴标签
plt.ylabel()          //设置y轴标签

ax1.set_title("(a)         ", x=-0.06)          #调整子图标题位置

plt.show()       //显示图片
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

有子图:

fig = plt.figure()        
ax1 = fig.add_subplot(1, 2, 1)       //一行两列第一列
ax2 = fig.add_subplot(1, 2, 2)       //一行两列第二列

ax1.set_xlabel("    ")               //设置子图1的X轴标签
ax1.set_ylabel("    ")               //设置子图2的Y轴标签

plt.show()       //显示图片
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

折线图&散点图

#设置两条折线的标签,颜色,线条风格,线条宽度
plt.plot(x, y1, label="样例1",color="",linestyle="",linewidth="")
plt.plot(x, y2, label="样例2",color="",linestyle="",linewidth="")
#添加图例  loc确定位置,参数有best/upper left等
plt.legend(loc=" ")    

散点图:判断变量之间存在的关联趋势,展示离群点(分布规律)
plt.scatter(x, y)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

柱状图

plt.bar(np.arange(len(df["salary"].value_counts())), df["salary"].value_counts())
plt.axis([0,4,0,1000])   #x轴范围从0到4,y轴范围从0到1000

for x,y in zip( np.arange(len(df["salary"].value_counts())), (df["salary"].value_counts()) )
    plt.text(x,y,y, ha="center", va="bottom")      //给柱状图设置值

#横向条形图
plt.barh()   横向条形图
plt.yticks()

import seaborn as sns
sns.set_style()   (备选值 darkgrid, whitegrid, dark, white, ticks)
sns.set_context(context="", font_scale=)
sns.set_palette( sns.color_palette("RdBu".n_colors=7)[5] )   #调色盘                    具体seaborn官网查看具体值
sns.countplot(x="salary", data=df)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

绘制多条并列的柱状图

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
index = np.arange(n_groups)
bar_width = 0.3               //每列坐标间隔
ax.bar(index, a, bar_width, color='g', label='order number')
ax.bar(index + bar_width, means_poi, bar_width, color='b', label='poi category number')
ax.bar(index + bar_width*2, means_poinumber, bar_width, color='r', label='poi number')
ax.set_xlabel('loction')
ax.set_ylabel('number')
ax.set_title('***')
ax.set_xticks(index + bar_width)     //横坐标刻度线位置
ax.set_xticklabels(('m1', 'm2', 'm3', 'm4', 'm5', 'm6', 'm7', 'm8', 'm9')) ###设置X轴坐标刻度值
ax.legend()
fig.tight_layout()
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

直方图:主要用于未经统计过的数据

d=  组距
num_bins =(max-min)//d  组数
plt.hist(a, num_bins)                        #频数分布直方图
plt.xticks(range(min(a), max(a)+d, d))

plt.hist(a, num_bins, density=True)   #频率分布直方图
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

饼状图

lb = data["col"].value_counts().index
plt.pie(data["col"].value_counts(normalize=True),explode=explodes,labels=lb,autopct="%1.1f%%")
#explode 突出显示
#labels 各个饼的标签
#autopct 显示各个饼的具体百分比数值
  • 1
  • 2
  • 3
  • 4
  • 5

点击图,热图

from pyheatmap.heatmap import HeatMap
import numpy as np
N = 10000
X = np.random.rand(N) * 255  # [0, 255]
Y = np.random.rand(N) * 255
data = []
for i in range(N):
    tmp = [int(X[i]), int(Y[i]), 1]
    data.append(tmp)
heat = HeatMap(data)
heat.clickmap(save_as="1.png") #点击图
heat.heatmap(save_as="2.png") #热图
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

其他可视化工具:
①echarts
②plotly:可视化工具中的github
常用作图:

#地理数据可视化:
data.plot(kind="scatter", x="longitude", y="latitude", alpha=0.1, s#半径,c#颜色)
#坐标去除科学计数法:
ax.get_xaxis().get_major_formatter().set_useOffset(False)
ax.get_yaxis().get_major_formatter().set_useOffset(False)
#设置坐标轴刻度间隔
from matplotlib.pyplot import MultipleLocator
x_major_locator=MultipleLocator(你需要设置的刻度间隔值)
ax3.xaxis.set_major_locator(x_major_locator)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

数据分析常用代码:

预览数据情况:  data.head()     默认访问前5行
快速获取数据集的简单描述,总行数,每个属性类型和非空值的数量: data.info() 
查看有多少种分类存在,每种类别下分别有多少区域:   data.value_counts()
显示数值属性的摘要:     data.describe()
删除数据重复值:    data.drop_duplicates()
整个数据集上调用hist()方法,绘制每个属性的直方图: 
import matplotlib.pyplot as plt
data.hist(bins= ,figsize=( , ))  hist方法依赖于matplotlib
plt.show()

选取特定行列:data.loc[x;y]     选取特定行:data.loc[x,:]

相关性分析:    
data.corr()   #相关系数矩阵,即给出任意两特征之间的相关系数
corr_matrix = data.corr()
corr_matrix["col"].sort_values(ascending=False)
皮尔逊相关系数: 越接近1,表示有越强的正相关, 越接近-1,表示有越强的负相关

绘制每个数值属性相对于其他数值属性的相关性:
from pandas.tools.plotting import scatter_matrix
attributes = ["col1","col2","col3","col4"]
scatter_matrix(data[attribute],figsize=(12,8))
data.plot(kind="scatter", x="col1", y="col2", alpha=0.1)

周期性分析:时间轴

贡献度分析/帕累托分析:   
cumsum()   #累积计算,依次给出前1,2,3...,n个数的和
cumprod()   #累积计算,依次给出前1,2,3...,n个数的积
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

数据预处理常用代码:

特征归一化
线性函数归一化:(data-data.min())/(data.max()-data.min())
零均值归一化:(data-data.mean())/data.std()
小数定标归一化:data/10**np.ceil(np.log10(data.abs().max()))

字符串转化为时间datetime:
d = datetime.datetime.strptime(str, "%Y/%m/%d %H:%M")     #将str 转换为datetime时间
datetime时间转换为unix时间戳:
ans_time = time.mktime(xxx.timetuple())   #xxx为要进行转换的datetime时间
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

绘制混淆矩阵图示

import matplotlib.pyplot as plt
import numpy as np

confusion = #混淆矩阵
# 热度图,后面是指定的颜色块,可设置其他的不同颜色
plt.imshow(confusion, cmap=plt.cm.Blues)
# ticks 坐标轴的坐标点
# label 坐标轴标签说明
indices = range(len(confusion))
# 第一个是迭代对象,表示坐标的显示顺序,第二个参数是坐标轴显示列表
plt.xticks(indices, ['标签1', '标签2', '标签3'])
plt.yticks(indices, ['标签1', '标签2', '标签3'])

plt.colorbar()

plt.xlabel('真实值')
plt.ylabel('预测值')
plt.title('混淆矩阵')
# plt.rcParams两行是用于解决标签不能显示汉字的问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 显示数据
for first_index in range(len(confusion)):    #第几行
    for second_index in range(len(confusion[first_index])):    #第几列
        plt.text(first_index, second_index, confusion[first_index][second_index])
# 在matlab里面可以对矩阵直接imagesc(confusion)
# 显示
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/480450
推荐阅读
相关标签
  

闽ICP备14008679号