python学习

六种数据类型

数字,字符串,列表,元组,字典,集合

x=1

str='abcd'

list=['a','b','c','d']

tuple=('a','b','c','d')

dic={'name':'Bob','age':1}

set={1,2,3,4}
数据类型名称
number数字
string字符串
list列表
tuple元组
dictionary字典
set集合

number(数字)中包含3种数值类型:

1.整型(int) 整型就是整数,包括正整数、负整数、零,不带小数点。

2.浮点型(float) 浮点型由整数部分与小数点组成,必须包含小数点。

3.布尔型(bool) 布尔型是一种表示逻辑值的简单类型,只有俩个值,一个为 True(真,1),另一个为False(假,0)。
————————————————
版权声明:本文为CSDN博主「仰天长啸你爹驾到」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/2301_79844035/article/details/135087436

 

判断语句

if 语句

if 表达式:

循环体

if-else 语句

if 表达式

循环体

else

循环体

if-elif-else 语句

if 表达式

循环体

elif 表达式

循环体

else

循环体

九九乘法表

for i in range(1,10):
    for j in range(1,i+1):
        print(f"{j}*{i}={j*i}",end=' ')
    print("\n")

 

相互转换

函数描述
int(x)将x转换为一个整数
float(x)将x转换为一个浮点数
str(x/s)将x/s转换为字符串
eval(str)用于字符串,去除字符串的引号,获取引号里面的内容
list(s)将序列s转换为一个列表
tuple(s)将序列s转换为一个元组
set(s)将序列s转换为一个集合
dict(d)创建一个字典,d必须是一个(key,value)元组序列

 

循环语句

while 语句

while 表达式:

循环体

for 语句

for 循环变量 in 遍历对象(序列):

循环体

range函数

range(起始值,终止值,步长)

字符串

字符串的索引、切片与逆序

索引

H e l l o , w o r l d !

0 1 2 3 4 5 6 7 8 9 10 11 12

从0开始

切片

变量名[起始索引:结束索引+1:间隔个数]

逆序

变量名[结束索引:开始索引-1:-1]

字符串.upper() 将字符串里的字符全部大写

字符串.lower() 将字符串里的字符全部小写

字符串.isupper() 判断字符串中字符是否都是由大写字母组成

字符串.islower() 判断字符串中字符是否都是由小写字母组成

字符串.isdigit() 判断字符串中是否都是由数字组成

字符串.count(字符) 统计指定字符出现的次数

列表

操作方法描述
列表.append(元素)在列表末尾添加一个元素
列表.extend(序列)在列表末尾追加一个序列
列表.insert(索引,元素)在列表对应的索引插入元素
del 列表[索引]删除列表中对应索引的元素
列表.pop(索引)删除列表中对应索引的元素,并返回删除的元素,默认最后一个
列表.remove(元素)删除列表中对应元素的第一个匹配项
列表.clear()清空列表
列表[索引]=新元素将列表对应索引的元素,修改为新元素
列表.index(元素)返回元素对应的索引

列表推导式

[表达式 for 变量 in 列表]

[表达式 for 变量 in 列表 if 条件]

len()获取列表长度

元组

元组的值无法修改、添加或删除。

max() min() 返回元组中元素的最大,小值

count()统计某个元素在元组中出现的次数

元组操作

index()从元组中找出某个对象第一个匹配项的下标位置。
count()统计某个元素在元组中出现的次数
len()计数元组元素的个数,并返回值
max()返回元组中元素的最大值
min()返回元组中元素的最小值

字典

操作代码示范描述
访问值字典序列[键]访问已知键所对应的值
修改值字典序列[键]=新值修改已知键的值
添加键值对字典序列[新键]=新值添加新的键值对
del 字典序列[键]删除字典中对应的键的键值对
del 字典序列删除字典
字典序列.clear()清空字典
字典序列.items()查找字典的所有的键值对
字典序列.keys()查找字典的所有的key(键)
字典序列.values()查找字典的所有的value(值)

集合

集合序列.add(数据)添加一个数据

集合序列.remove(数据)删除集合中指定的数据

集合序列.pop() 随机删除集合中的元素

函数

def 函数名 ( ):

函数语句

return 返回值

形参和实参

def 函数名(形参1,形参2):

函数体

调用方式

函数名(实参1,实参2)

matploplit

创建画布

plt.figure(figsize = (a,b),dpi = )

figsize:指图像的长(a)宽(b) dpi:图像清晰度(越大越清晰)

添加自定义x,y刻度

plt.xticks(x,rotation=,fontsize=) 
plt.yticks(y,rotation=,fontsize=)

x:要显示的刻度值 y:要显示的刻度值 rotation:旋转角度 fontsize:字体大小 

设置x,y标签和标题 

plt.xlabel(  ,fontsize= )
plt.ylabel(  ,fontsize= ) 
plt.title(  ,fontsize= )

显示图像

plt.show()

中文显示问题

plt.rcParams['font.sans-serif'] = ['SimHei']

绘制图像

   折线图

plt.plot(x,y.color = '',linestyle = '',marker = '',linestyle='',label='')

x:横轴数据

y:纵轴数据

color:图像颜色,可以直接输入英文名称,或者是RGB颜色值  

linewidth:线条宽度

marker: 标记风格

linestyle: 线条样式

label:图例

import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [2,3,4,5,6]
plt.plot(x,y)
plt.show()

散点图

plt.scatter(x,y)

 柱状图

plt.bar(x,width=,height=,label=,alpha=,align=,color=)

x: 柱状图中的横坐标点

list height: 柱状图对应每个横坐标的高度值

width: 柱状图的宽度,默认值为0.8

label: 每个数据样本对应的label,后面调用legend()函数可以显示图例

alpha: 透明度

align:每个柱状图的对齐方法

color:选择柱状图的颜色

import matplotlib.pyplot as plt
x = [5,10,15,20,25,7,4,2,4,12,23,14,19,22,19,18,20,16]
y = [3,7,4,5,3,3,2.3,2.4,4.5,4.8,2.1,3,4.5,5.6,6.5,5.8,6.2,3.9]
plt.bar(x,y)
plt.show()

直方图

plt.hist(x,bins=None)
plt.hist(x,bins=None)

x:需要传递的数据

bins:组距

numpy

data.shape查看数组的维度(以元组的形式输出)
data.ndim查看数组维数
data.size查看数组中的元素数量
data.itemsize查看一个数组元素的长度
data.dtype查看数组元素的类型
one = np.ones([index, columns]) 	#生成index行,columns列且所有元素都为1的数组
zero = np.zeros([index, columns])	#生成index行,columns列且所有元素都为0的数组

 生成固定范围内的数组

np.linspace(start, stop, num, endpoint)

start:序列的起始值

stop:序列的结束值

num:要生成的等间隔样例数量,默认为50

endpoint:序列中是否包含stop值,默认为true

np.arange

np.arange(start,stop,step,dtype) 

生成随机数组

np.random.randn(d0,d1,d2,……,dn)
np.random.normal(loc = 0.0,scale = 1.0,size = None)
np.random.standard_normal(size = None)

均匀分布

np.random.rand(d0,d1,d2,……,dn)
np.random.uniform(low = 0.0,high = 1.0,size = None)
np.random.randint(low, high = None,size = None,dtype = 'i')

 形状修改

ndarray.reshape

ndarray.reshape(shape, order)

类型修改

ndarray.astype(type)

统计指标

方法作用
np.min(ndarray,axis)查询所有行或所有列的最小值
np.max(ndarray,axis)查询所有行或所有列的最大值
np.median(ndarray,axis)查询所有行或所有列的中位数
np.mean(ndarray,axis)查询所有行或所有列的平均值
np.std(ndarray,axis,dtype)查询所有行或所有列的标准差
np.var(ndarray,axis,dtype)查询所有行或所有列的方差
np.ardmax(ndarray)查询最大值的位置
np.ardmin(ndarray)查询最小值的位置

矩阵乘法

np.matmul矩阵与矩阵相乘(禁止出现矩阵与标量相乘)
np.dot矩阵与矩阵和标量相乘皆可

 pandas

DataFrame

pd.DataFrame(data = None,index = None,columns = None)
属性作用
dataframe.shape获取维度
dataframe.index获取行索引表
dataframe.columns获取列索引表
dataframe.values获取其中array的值
dataframe.T行列互换(转置)
dataframe.head()默认获取前5行,其他行数自行添加
dataframe.tail()默认获取后5行,其他行数自行添加
dataframe.info获取每一列的非空元素个数

DataFrame索引

修改行列索引值

data.index = new_index
data.columns = new_columns

修改索引值不能单个修改,必须整体修改

重设索引

dataframe.reset_index(drop = False)

设置新的下标索引 drop:默认为False,不删除原来索引,如果为True,删除原来索引值

以某列值设置为新的索引

dataframe.set_index(keys,drop = True)

keys:列索引命或者列索引名称的列表 drop:bool值默认为True,当做新的索引,删除原来的列

时间类型

data1 = pd.to_datetime(data)

4.10.4.1 统计函数

函数作用
sum获取总和
mean获取平均值
median获取中位数
min获取最小值
max获取最大值
mode获取众数
abs获取绝对值
prod获取累积
std获取标准差
var获取方差
idxmax获取最大值索引
idxmin获取最小值索引

pandas画图

种类描述
line折线图
bar条形图(竖直条状)
bath条形图(水平条状)
hist直方图
pie饼图
scatter散点图

csv

read_csv

pd.read_csv(filepath_or_buffer,sep = ',',usecols = None)

to_csv

dataframe.to_csv(path_or_buffer=None,sep = ',',columns = None,header = True,index = True,mode = 'w',encoding = None)

path_or_buf:文件路径

sep:分隔符,默认用','隔开

columns:选择需要的列索引

header:是否写进列索引值

index:是否写进行索引值

mode:'w':重写,'a':追加

高级数据处理

判断数据中是否包含NAN

方法描述
pd.isnull(dataframe) 或dataframe.isnull()有缺失值返回True,没有缺失值返回False
pd.notnull(dataframe)或dataframe.isnull()没有缺失值返回True,有缺失值返回False

删除存在缺失值的对象

dataframe.dropna(axis = 0)

缺失值没有使用NAN标记

dataframe.replace(to_replace = '?',value = np.nan)

合并

pd.concat([data1, data2], axis = 1)

决策树

模块sklearn.tree

sklearn中决策树的类都在”tree“这个模块之下。这个模块总共包含五个类:

tree.DecisionTreeClassifier
分类树
tree.DecisionTreeRegressor
回归树
tree.export_graphviz
将生成的决策树导出为 DOT 格式,画图专用
tree.ExtraTreeClassifier
高随机版本的分类树
tree.ExtraTreeRegressor  
高随机版本的回归树

一般步骤

from sklearn import tree #导入需要的模块
clf = tree.DecisionTreeClassifier()     #实例化
clf = clf.fit(X_train,y_train) #用训练集数据训练模型
result = clf.score(X_test,y_test) #导入测试集,从接口中调用需要的信息
criterion 参数
输入 ”entropy“ ,使用 信息熵 Entropy
输入 ”gini“ ,使用 基尼系数 Gini Impurity
参数
criterion
如何影响模型 ?
确定不纯度的计算方法,帮忙找出最佳节点和最佳分枝,不纯度越低,决策树对训练集
的拟合越好
可能的输入有哪
些?
不填默认基尼系数,填写 gini 使用基尼系数,填写 entropy 使用信息增益
怎样选取参数?
通常就使用基尼系数
数据维度很大,噪音很大时使用基尼系数
维度低,数据比较清晰的时候,信息熵和基尼系数没区别
当决策树的拟合程度不够的时候,使用信息熵
两个都试试,不好就换另外一个

决策树使用技巧

1:决策树往往会过度拟合具有大量特征的数据, 高维空间中样本较少的树很可能会过度拟合。考虑执行降维(PCA, ICA,或特征选择) 让你的树有更好的机会找到有区别的特征。

2:树每增加一层填充树所需的样本数量会加倍。使用max_depth来控制 树的大小以防止过度拟合

3:使用 min_samples_split 或 min_samples_leaf 确保多个 样本通过控制哪些分裂将通知树中的每个决策 予以考虑。非常小的数字通常意味着树会过度拟合, 而大量的数据会阻止树学习数据。尝试 min_samples_leaf=5 作为初始值。如果样本量不同 很大程度上,浮点数可以用作这两个参数的百分比。 虽然 min_samples_split 可以创建任意小的叶子, min_samples_leaf 保证每个叶子都有最小尺寸,避免 回归问题中的低方差、过度拟合叶节点。为了 类别较少的分类,min_samples_leaf=1 通常是最好的 选择

随机深林

1集成算法概述

集成学习(ensemble learning)是时下非常流行的机器学习算法,它本身不是一个单独的机器学习算法,而是通过在数据上构建多个模型,集成算法会考虑多个评估器的建模结果,汇总之后得到一个综合的结果,**以此来获取比单个模型更好的回归或分类表现**。多个模型集成成为的模型叫做集成评估器(ensemble estimator),组成集成评估器的每个模型都叫做基评估器(base estimator)。通常来说,有三类集成算法:装袋法(Bagging),提升法(Boosting)和stacking

sklearn 中的集成算法模块 ensemble
重要参数
用随机森林回归填补缺失值
我们从现实中收集的数据,几乎不可能是完美无缺的,往往都会有一些缺失值。面对缺失值,很多人选择的方式是
直接将含有缺失值的样本删除,这是一种有效的方法,但是有时候填补缺失值会比直接丢弃样本效果更好,即便我
们其实并不知道缺失值的真实样貌。在 sklearn 中,我们可以使用 sklearn.impute.SimpleImputer 来轻松地将均
值,中值,或者其他最常用的数值填补到数据中,在这个案例中,我们将使用均值, 0 ,和随机森林回归来填补缺
失值,并验证四种状况下的拟合状况,找出对使用的数据集来说最佳的缺失值填补方法。

数据预处理与特征工程

数据挖掘的五大流程:
1. 获取数据
2. 数据预处理
数据预处理是从数据中检测,纠正或删除损坏,不准确或不适用于模型的记录的过程
可能面对的问题有:数据类型不同,比如有的是文字,有的是数字,有的含时间序列,有的连续,有的间断。
也可能,数据的质量不行,有噪声,有异常,有缺失,数据出错,量纲不一,有重复,数据是偏态,数据量太
大或太小
数据预处理的目的:让数据适应模型,匹配模型的需求
3. 特征工程
特征工程是将原始数据转换为更能代表预测模型的潜在问题的特征的过程,可以通过挑选最相关的特征,提取
特征以及创造特征来实现。其中创造特征又经常以降维算法的方式实现。
可能面对的问题有:特征之间有相关性,特征和标签无关,特征太多或太小,或者干脆就无法表现出应有的数
据现象或无法展示数据的真实面貌
特征工程的目的: 1) 降低计算成本, 2) 提升模型上限
4. 建模,测试模型并预测出结果
5. 上线,验证模型效果
模块
模块 preprocessing :几乎包含数据预处理的所有内容
模块 Impute :填补缺失值专用
模块 feature_selection :包含特征选择的各种方法的实践
数据预处理 Preprocessing & Impute
数据归一化
sklearn 当中,我们使用 preprocessing.MinMaxScaler 来实现这个功能。 MinMaxScaler 有一个重要参数,
feature_range ,控制我们希望把数据压缩到的范围,默认是 [0,1]
preprocessing.StandardScaler
当数据 (x) 按均值 (μ) 中心化后,再按标准差 (σ) 缩放,数据就会服从为均值为 0 ,方差为 1 的正态分布(即标准正态分
布),而这个过程,就叫做 数据标准化 (Standardization ,又称 Z-score normalization) ,公式如下:
缺失值
impute.SimpleImputer
class sklearn.impute.SimpleImputer ( missing_values=nan , strategy=’mean’ , fill_value=None , verbose=0 ,
copy=True )
在讲解随机森林的案例时,我们用这个类和随机森林回归填补了缺失值,对比了不同的缺失值填补方式对数据的影
响。这个类是专门用来填补缺失值的。它包括四个重要参数:

 preprocessing.LabelEncoder:标签专用,能够将分类转换为分类数值

preprocessing.OrdinalEncoder:特征专用,能够将分类特征转换为分类数值 

preprocessing.OneHotEncoder :独热编码,创建哑变量

二值化与分段

 sklearn.preprocessing.Binarizer

preprocessing.KBinsDiscretizer

过滤法

嵌入法

嵌入法是一种让算法自己决定使用哪些特征的方法,即特征选择和算法训练同时进行。在使用嵌入法时,我们先使
用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据权值系数从大到小选择特征。这些权值系
数往往代表了特征对于模型的某种贡献或某种重要性,比如决策树和树的集成模型中的 feature_importances_
性,可以列出各个特征对树的建立的贡献,我们就可以基于这种贡献的评估,找出对模型建立最有用的特征。因此
相比于过滤法,嵌入法的结果会更加精确到模型的效用本身,对于提高模型效力有更好的效果。并且,由于考虑特
征对模型的贡献,因此无关的特征(需要相关性过滤的特征)和无区分度的特征(需要方差过滤的特征)都会因为
缺乏对模型的贡献而被删除掉,可谓是过滤法的进化版。
feature_selection.SelectFromModel

降维算法 

PCASVD

  • 24
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值