【总结.】

 运算符

#比较运算

!=,==,>,<,>=,<=

num1 = 2
num2 = 1
print(f"2 != 1的结果是:{num1 != num2}")

name1 = "it"
name2 = "he"
print(f"it == he 结果是:{name1 == name2}")

num1 = 1
num2 = 3
print(f"1 > 3结果是:{num1 > num2}")
print(f"1 < 3的结果是:{num1 < num2}")

num1 = 10
num2 = 11
print(f"10 >= 11的结果是:{num1 >= num2}")
print(f"10 <= 11的结果是:{num1 <= num2}")
2 != 1的结果是:True
it == he 结果是:False
1 > 3结果是:False
1 < 3的结果是:True
10 >= 11的结果是:False
10 <= 11的结果是:True

 #逻辑运算符

and:两个真才为真

print(3>0 and 2>0)
print(5>0 and 3<0)
print(2<0 and 5>0)
print(6<0 and 5<0)
True
False
False
False

 or  :两个假才为假

print(3>0 or 2>0)
print(5>0 or 3<0)
print(2<0 or 5>0)
print(6<0 or 5<0)
True
True
True
False

not :真变假,假变真

print(not True)
print(not False)
False
True

运算符的优先级 

not>and>or 

 

判断语句 

age = int(input("请输入你的年龄:"))

if age >= 18:
    print("您已成年")
else:
    print("您未成年")
请输入你的年龄: 18
您已成年

 循环语句

for i in range(1,10):
    for j in range(1,i+1):
        print(f"{j}*{i}={j * i}\t", end='')
    print()
1*1=1	
1*2=2	2*2=4	
1*3=3	2*3=6	3*3=9	
1*4=4	2*4=8	3*4=12	4*4=16	
1*5=5	2*5=10	3*5=15	4*5=20	5*5=25	
1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36	
1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49	
1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64	
1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81	

列表

#列表
a=[1,2,3,4,5]
b=['a','b','c']
a[索引] #访问列表中的某个元素
a[-1] #访问列表中的最后一个元素
a.append(元素) #在列表末尾添加一个元素
a.extend(序列) #在列表末尾添加一序列
a,insert(索引,元素) #在对应的索引插入元素
del a[索引] #删除对应索引元素
a.remove(元素) #删除列表中对应元素的第一个匹配项
a.clear() #清空列表
len(a) #获取列表的长度
a+b #连接列表
a*3 #复制列表
sum(a) #求和
garde1,grade2,grade3=b #多重赋值
a.sort(reverse=True/False) #对列表永久排序 True降序,False升序
sorted(a,reverse=True/False) #对列表临时排序

列表切片 

h=[1,2,3,4,5,"进入"]
h[0:3] #列表前三
h[:] #整个列表
h[::-1] #倒序输出
h[0:6:2] #隔一个输出
[1, 2, 3]
[1, 2, 3, 4, 5, '进入']
['进入', 5, 4, 3, 2, 1]
[1, 3, 5]

列表拷贝

a=[1,2,3]
b=a.copy()
c=a[:]
[1, 2, 3]

 访问嵌套列表

a=[[1,2,3],[4,5,6],[7,8,9]]
for i in a:
    for each in i:
        print(each,end='')
    print()
123
456
789

 元组

(元组不可以修改,但如果元组里面有列表,可修改列表里的数据)

a=(1,) #包含一个元素的元组必须有逗号
index() #从元组中找出某个对象第一个匹配的下表位置
count() #统计元素在元组中出现的次数
len() #统计元组元素个数
max() #返回元组中元素的最大值
min() #返回元组中元素的最小值
b=(1,2,3,4,5)
for i in b:  #用for循环遍历元组中的所有值
    print(i)
1
2
3
4
5

 字典

#字典
dict={'color':'green','points':5}
dict['color'] #访问字典中键所对应的值
dict['color']='red' #修改键对应的值
dict['position']=5 #添加键值对
del dict['color'] #删除字典中对应键的键值对
del dict #删除字典
dict.clear() #清空字典
dict.keys() #查找字典的所有键
dict.values() #查找字典的所有值

 

get()

#如果指定的键有可能不存在,应考虑使用get()
#get()方法有两个参数,分别为要取得其值的键和当该键不存在时返回的备用值 

a={'apple':2,'banaba':3}
print('i have' + str(a.get('orange',0)) + 'orange')
i have0orange

遍历字典中的键值 

dict={'color':'green','points':5}
for i in dict.keys(): #遍历字典中的所有键
    print(i)
for i in dict.values(): #遍历字典中的所有值
    print(i)
color
points
green
5

set():剔除重复项 

a={1:'a',2:'a',3:'b',4:'c',5:'c'}
for i in set(a.values()): #用set()剔除重复项
    print(i)
b
a
c

集合 

#集合是一个无序的不重复序列,可以用来去重

a=set([1,2,3])
a.add(5) #添加一个数据
b={'a','c'}
a.update(b) #添加一个序列
a.remove(1) #删除集合中指定的数据,如果不存在,报错
a.pop() #随机删除集合中的某个数据
a.discard(2) #删除集合中指定的数据,如果不存在,不做任何操作

字符串 

#字符串
name='tom'
age=18
print(f'我叫{name},今年{age}') #使用转义字符f进行格式化输出
我叫tom,今年18
name = input("请输入您的名字:")
print(name)
请输入您的名字: a
a

 字符串切片

#切片
a='sadfdhdjkyt'
a[0:3] #前三个
a[:] #整个字符串
a[::2] #步长为2
a[-1] #最后一个元素
a[::-1] #倒序输出
'sad'
'sadfdhdjkyt'
'sdddkt'
't'
'tykjdhdfdas'

查找 

#查找
#find() ##返回这个字符串第一个匹配值最开始的位置下标,如果不存在则返回-1
a='abcdef'
a.find('b') 
#index() #检测某个⼦串是否包含在这个字符串中,如果在返回这个⼦串开始的位置下标,否则则报异常。
a='hello world'
a.index('l',6,10)
#count() #统计子串在字符串中出现的次数
a="结合部分标分布"
a.count("分",4,7)
# rfind():与find()功能相同。但查找的方向从右侧开始
# rindex():与index()功能相同,但查找方向为右侧开始

修改 replace()


a="一二三四五上山打老虎"
a.replace("老虎","黑熊") #替换
#'一二三四五上山打黑熊'

#split()
a.split("二") #分割
#['一', '三四五上山打老虎']

#join() 
a=("a","b","c")
print(','.join(a))
#'a,b,c'
b={"d","f","g"}
print(','.join(b))
# f,g,d

字符串方法

#字符串方法
a="abcdEfg"
a.capitalize() #将字符串第一个字符转化为大写
# 'Abcdefg'
a.upper() #将字符串所有字符转化为大写
# 'ABCDEFG'
a.lower() #将字符串所有字符转化为小写
# 'abcdefg'
a.isupper() #字符串是否都由大写字母组成
a.islower() #字符串是否都由小写字母组成
a.isdigit() #字符串中是否都由数字组成
a.isnumeric() #字符是否都由数字组成
a.isalpha() #字符串是否都由字母组成,并且非空
a.isalnum() #字符串是否都由字母和数字组成,并且非空
a.isdecimal() #字符串是否都由数字字符组成,并且非空
a.isspace() #空格,制表符和换行符,并且非空
a.istitle() #是否以大写字母开头,后面都是小写字母的单词数字或空格
a.find(字符,起始位置,结束位置) #查找指定字符在字符串中的位置索引,找不到返回-1
a.index(字符,起始位置,结束位置) #不报错
a.count() #统计指定字符出现次数
a.replace(字符,新字符,替换次数) #用于修改
a.split(分割符,分割次数) #拆分字符串 
分隔符.join(序列)   #分隔符可为空
a.title() #字符串内每个单词首字母转为大写

matplotlib

标记风格 

标记字符说明标记字符说明
'.'点标记','像素标记(极小点)
'v'倒三角标记’^‘上三角标记
'>'右三角标记'<'左三角标记
'1'下花三角标记'2'上花三角标记
'3'左花三角标记'4'右花三角标记
'o'实心圈标记's'实心方形标记
'p'实心五角标记'*'星形标记
'h'竖六边形标记'H'横六边形标记
'+'十字标记'x'x标记
'D'菱形标记'd'瘦菱形标记

 

线条样式 

样式说明
’-‘实线
’--‘虚线
’-.‘点划线
':'点虚线


折线图

# matplotlib
#折线图
from matplotlib import pyplot as plt #导入库并重命名
plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示问题
x=[1,2,3,4,5,6]
y=[11,22,43,30,52,66]
plt.plot(x,y,label='数据1',color='deeppink',marker='.',linestyle="--") #调用plot函数用于作图
x1=[2,3,4,5,6,7]
y1=[20,15,30,25,40,35]
plt.plot(x1,y1,label='数据2',marker='*')
plt.xlabel("阶段") # xlabel 函数添加横坐标代表的含义
plt.ylabel("数字") # ylabel 函数添加纵坐标代表的含义
plt.title("阶段和数字的关系") #title 函数添加图形的标题
plt.legend() #通过 legend 函数为两条折线打上标签
plt.xticks(rotation=45,fontsize=10)
plt.grid(True) #加网格线
plt.show() #调用show函数显示图形
#color 参数指定折线颜色
#marker 参数指定每个数据点的标记
#linestyle 参数指定图形的形状
#rotation:旋转角度
#fontsize:字体大小

条形图

#条形图
from matplotlib import pyplot as plt
x=[20, 26, 27, 28, 29]
y= [38, 42, 46, 20, 50]
plt.bar(x,y, label="啦啦啦")
plt.xlabel("嗯")
plt.ylabel("额")
plt.title("一二三")
plt.legend()
plt.show()

 直方图

#直方图
import numpy as np
from matplotlib import pyplot as plt
x=[1,2,3,4,5,6]
y=[2,3,4,5,6,7]
plt.hist(x, bins=5, edgecolor='red') #bins:组距 #edgecolor:分割线
plt.title('图')
plt.xlabel('数量')
plt.ylabel('个数')
plt.show()

 散点图

#散点图
import matplotlib.pyplot as plt
import numpy as np
x = [5,10,11,12,34,23,15,20,25,7,4,2,4,12,23,14,19,22,19,18,20,16]
y = [3,7,4,5,12,12,15,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.scatter(x,y,color='black')
plt.title('图')
plt.xlabel('数量')
plt.ylabel('个数')
plt.show()

 

饼图 

#饼图
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_csv('D:/pythonproject/.py/random_data.csv') #使用Pandas的函数从CSV文件中读取数据,并将数据存储在DataFrame对象中
grouped=df.groupby('class')
sizes = grouped.size()
fig, ax = plt.subplots()
ax.pie(sizes, labels=sizes.index, autopct='%1.1f%%', startangle=90, colors=['orange', 'blue', 'green', 'violet', 'deeppink'])
ax.axis('equal') #设置坐标轴的纵横比为1,使得饼图呈现为一个正圆
plt.title('Class Proportion')
plt.show()
#sizes是各组的大小
#labels=sizes.index将类别标签设置为每个组的索引。
#startangle=90 指定饼图的起始角度为90度
#autopct='%1.1f%%' 显示每个扇形区域的百分比,并保留一位小数
#colors=['orange', 'blue', 'green', 'violet', 'deeppink'] 指定了各个扇形区域的颜色

 

import matplotlib.pyplot as plt
animals = ['cat', 'dog', 'tiger', 'bird']
count = [59, 55, 47, 36]
plt.pie(count, labels=animals, autopct='%1.1f%%', counterclock=False)
plt.title('饼图')
plt.tight_layout()
plt.show()
#counterclock=False 顺时针方向

numpy 

#numpy
import numpy as np                                            
a = np.array([1, 2, 3, 4])  # 创建的一维数组,参数为列表
np.shape(a)    #(4,)  
b = np.array([[1,2,3,4],[4,5,6,7], [7,8,9,10]])   # 创建二维数组
np.shape(b) #查看数组的维度(以元组的形式输出)               
b.shape[0]  # 返回二维数组的行数:3
b.shape[1]  # 返回二维数组的列数:4
a.ndim #查看数组维数:1
b.ndim #查看数组维数:2
a.size #查看数组中的元素数量:4
b.size #查看数组中的元素数量:12
a.itemsize #查看一个数组元素的长度:4
b.itemsize #查看一个数组元素的长度:4
a.dtype #查看数组元素的类型:dtype('int32')
b.dtype #查看数组元素的类型:dtype('int32')

正泰分布 

#正泰分布
import numpy as np
import matplotlib.pyplot as plt            
np.random.seed(0)
data = np.random.normal(0,1,10000)      # 生成10000个数据点,均值为0,方差为1的高斯分布数据
print(min(data),max(data))            #打印了生成的数据集中的最小值和最大值
n, bins, patches = plt.hist(data,50,facecolor='green',edgecolor='white') #数据集,柱子的个数,柱子的颜色,柱子边缘的颜色为白色
plt.show()                                                     # 显示绘图

 

 数组索引切片

#数组索引切片
import numpy as np
a = np.arange(10)
b = slice(2,7,2)  #(起始,终止,步长)
print(a[b])      #[2, 4, 6]

import numpy as np
a = np.arange(10)
b=a[2:7:2]
print(b) #[2 4 6]

import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])  
print (a)
print (a[1:]) #第一行之后的元素
print (a[...,0]) #第一列元素[1 4 7]
print (a[1,...]) #第二行元素[4 5 6]
print (a[...,1:]) #第二列及其剩余元素
[2 4 6]
[2 4 6]
[[1 2 3]
 [4 5 6]
 [7 8 9]]
[[4 5 6]
 [7 8 9]]
[1 4 7]
[4 5 6]
[[2 3]
 [5 6]
 [8 9]]

 形状修改

#形状修改
import numpy as np
a = np.arange(8)
print (a)
print ('\n')
b = a.reshape(2,4)     #reshape 不改变数据的条件下修改形状
print (b)

c=b.T     #对数组进行转置
print(c)
[0 1 2 3 4 5 6 7]
[[0 1 2 3]
 [4 5 6 7]]
[[0 4]
 [1 5]
 [2 6]
 [3 7]]

 数组的去重

#数组的去重
a = np.array([[1, 2, 3, 4],[3, 4, 5, 6]])
np.unique(a)   #array([1, 2, 3, 4, 5, 6])
array([1, 2, 3, 4, 5, 6])

数组间的运算 

#数组间的运算
a=np.array([[1,2,3],[1,2,3]])
print(a+1)    #数组里每个元素加一
print(a*2)    #数组里每个元素乘二

b=np.array([[2],[1]])
print(a+b)   #两个数组相加

print (np.add(a,b))   #两个数组相加

print (np.subtract(a,b))  #两个数组相减

print (np.multiply(a,b))   #两个数组相乘

print (np.divide(a,b))     #两个数组相除

[[2 3 4]
 [2 3 4]]
[[2 4 6]
 [2 4 6]]
[[3 4 5]
 [2 3 4]]
[[3 4 5]
 [2 3 4]]
[[-1  0  1]
 [ 0  1  2]]
[[2 4 6]
 [1 2 3]]
[[0.5 1.  1.5]
 [1.  2.  3. ]]

统计指标 

#统计指标
import numpy as np
a = np.random.randint(10,50,(5,5))
print(a)
print(np.min(a,axis=0))   #axis=0:按纵轴排序,找出最小值
print(np.max(a,axis=0))   #axis=0:按纵轴排序,找出最大值
print(np.median(a,axis=1))   ##axis=1:按横轴排序,找出中位数
print(np.mean(a,axis=1))     #查询所有行或所有列的平均值
print(np.std(a,axis=1))    #查询所有行或所有列的标准差
print(np.var(a,axis=1))     #查询所有行或所有列的方差
print(np.argmax(a,axis=0))   #查询最大值的位置
print(np.argmin(a,axis=0))   #查询最小值的位置
[[45 44 14 31 43]
 [25 27 44 44 46]
 [32 22 36 42 12]
 [42 43 19 17 33]
 [17 21 32 45 34]]
[17 21 14 17 12]
[45 44 44 45 46]
[43. 44. 32. 33. 32.]
[35.4 37.2 28.8 30.8 29.8]
[11.84229707  9.19565115 10.6282642  11.03449138  9.94786409]
[140.24  84.56 112.96 121.76  98.96]
[0 0 1 4 1]
[4 4 0 3 2]

pandas

import pandas as pd
a=[1,2,3,4]
b=[1,2,3,4]
c = pd.DataFrame(np.random.randint(0,20,(len(a),len(b))),index = a,columns = b) #index:行标签,columns:列标签
print(c)
print(c.shape) #获取维度
print(c.index) #获取行索引表
print(c.columns) #获取列索引表
print(c.values) 
print(c.T)  #转置
print(c.head(2)) #查看前两行
print(c.tail(2)) #查看后两行
 1   2   3   4
1   1  18   8   0
2   0  13  14  10
3  15   4  10  16
4  11   4   0   4
(4, 4)
Int64Index([1, 2, 3, 4], dtype='int64')
Int64Index([1, 2, 3, 4], dtype='int64')
[[ 1 18  8  0]
 [ 0 13 14 10]
 [15  4 10 16]
 [11  4  0  4]]
    1   2   3   4
1   1   0  15  11
2  18  13   4   4
3   8  14  10   0
4   0  10  16   4
   1   2   3   4
1  1  18   8   0
2  0  13  14  10
    1  2   3   4
3  15  4  10  16
4  11  4   0   4

 DataFrame索引操作

import numpy as np
import pandas as pd
from pandas import DataFrame
df = DataFrame(data=np.random.randint(0,50,size=(3,4)),index=[1,2,3],columns=['a','b','c','d'])
print(df)
print(df['a']) # 取单列
print(df[['a','c']]) #取多列
a   b   c   d
1  28   2  30  26
2   8  21  26  27
3  39  44   7  45
1    28
2     8
3    39
Name: a, dtype: int32
    a   c
1  28  30
2   8  26
3  39   7
import numpy as np
import pandas as pd
from pandas import DataFrame
df = DataFrame(data=np.random.randint(10,20,size=(3,4)),index=[1,2,3],columns=['a','b','c','d'])
print(df)
print(df.iloc[1]) # iloc:索引下标获取 取第2行元素

print(df.iloc[[0,2]]) # 取第1行和第3行

print(df.iloc[0,2]) # 第1行第3列的元素

print(df.loc[1,'a']) # loc:行列索引名字获取 取0行a列元素

print(df.iloc[[0,2],2]) # 取第1行和第3行的第3列元素

 a   b   c   d
1  19  18  15  17
2  16  11  10  15
3  12  14  16  18
a    16
b    11
c    10
d    15
Name: 2, dtype: int32
    a   b   c   d
1  19  18  15  17
3  12  14  16  18
15
19
1    15
3    16
Name: c, dtype: int32

 DataFrame赋值操作

import pandas as pd
import numpy as np
from pandas import DataFrame
df = pd.DataFrame(np.arange(12).reshape((3,4)),index=[1,2,3],columns=['a','b','c','d'])
print(df)
print(df.iloc[2,0])
df.iloc[2,0]=1   #将第三行第二列元素修改为1
print(df.iloc[2,0])
print(df)
df.a[df.a==0]=1  #将1赋值给a列为0的数
print(df)

a  b   c   d
1  0  1   2   3
2  4  5   6   7
3  8  9  10  11
8
1
   a  b   c   d
1  0  1   2   3
2  4  5   6   7
3  1  9  10  11
   a  b   c   d
1  1  1   2   3
2  4  5   6   7
3  1  9  10  11

DataFrame排序

#值排序
import pandas as pd
import numpy as np
from pandas import DataFrame
df = pd.DataFrame({"姓名":["熊大","光头强","熊二","翠花","吉吉国王"],
                "战斗力":["90","10","5","100","15"]})
print(df)
df["战斗力"] = df["战斗力"].astype(int)  #将 "战斗力" 列的数据类型更改为数字
a=df.sort_values("战斗力",axis=0,ascending=True)    #ascending = True  升序
print(a)

 姓名  战斗力
0    熊大   90
1   光头强   10
2    熊二    5
3    翠花  100
4  吉吉国王   15
     姓名  战斗力
2    熊二    5
1   光头强   10
4  吉吉国王   15
0    熊大   90
3    翠花  100

索引排序 

#索引排序
import pandas as pd
import numpy as np
from pandas import DataFrame
df = pd.DataFrame({"姓名":["熊大","光头强","熊二","翠花","吉吉国王"],
                "战斗力":["90","10","5","100","15"]},index=[2,1,3,5,4])
print(df)
a=df.sort_index(axis=0,ascending=True) #索引排序
print(a)
姓名  战斗力
2    熊大   90
1   光头强   10
3    熊二    5
5    翠花  100
4  吉吉国王   15
     姓名  战斗力
1   光头强   10
2    熊大   90
3    熊二    5
4  吉吉国王   15
5    翠花  100

DataFrame运算

import pandas as pd
import numpy as np
from pandas import DataFrame
df1 = pd.DataFrame(np.arange(12).reshape((3,4)),index=[1,2,3],columns=['A','B','C','D'])
print(df1)
df2 = pd.DataFrame(np.arange(16).reshape((4,4)),index=[1,2,3,4],columns=['A','B','C','D'])
print(df2)
df3=df1.add(df2,fill_value=0) #相加
print(df3)
df4=df1.sub(df2,fill_value=0) #相减
print(df4)
df5=df1.div(df2,fill_value=0) #相除
print(df5)
df6=df1.mul(df2,fill_value=0) #相乘
print(df6)

A  B   C   D
1  0  1   2   3
2  4  5   6   7
3  8  9  10  11
    A   B   C   D
1   0   1   2   3
2   4   5   6   7
3   8   9  10  11
4  12  13  14  15
      A     B     C     D
1   0.0   2.0   4.0   6.0
2   8.0  10.0  12.0  14.0
3  16.0  18.0  20.0  22.0
4  12.0  13.0  14.0  15.0
      A     B     C     D
1   0.0   0.0   0.0   0.0
2   0.0   0.0   0.0   0.0
3   0.0   0.0   0.0   0.0
4 -12.0 -13.0 -14.0 -15.0
     A    B    C    D
1  NaN  1.0  1.0  1.0
2  1.0  1.0  1.0  1.0
3  1.0  1.0  1.0  1.0
4  0.0  0.0  0.0  0.0
      A     B      C      D
1   0.0   1.0    4.0    9.0
2  16.0  25.0   36.0   49.0
3  64.0  81.0  100.0  121.0
4   0.0   0.0    0.0    0.0

 数据操作和分析

import numpy as np #NumPy 用于 Python 中的数值运算
import pandas as pd #Pandas 用于数据操作和分析
np.random.seed(0) #设置种子可确保每次执行代码时生成的随机数都是相同的,从而提供可重复性
index=np.arange(10000) #创建一个包含从 0 到 9999 的数字的数组
count=np.random.randint(0,10001,10000) #生成一个数组“count”,其中包含 10000 个介于 0 和 10000 之间的随机整数
class_=np.random.choice([1,2,3,4,5],10000) #创建一个数组“class_”,其中包含给定列表 [1, 2, 3, 4, 5] 中的 10000 个随机选择
normal_distribution=np.random.normal(0,1,10000) #从均值为 0 且标准差为 1 的正态分布中生成一个包含 10000 个随机数的数组“normal_distribution"
zero_one=np.random.choice(['0','1'],10000) #创建一个数组“zero_one”,其中包含列表中的 10000 个随机选项 ['0', '1']
df=pd.DataFrame({
    'index':index,
    'count':count,
    'class':class_,
    'normal_distribution':normal_distribution,
    '0-1':zero_one
}) #将数组组合成一个 Pandas DataFrame,其中包含名为“index”、“count”、“class”、“normal_distribution”和“0-1”的列
df.to_csv('random_data.csv',index=False) #将 DataFrame 写入名为“random_data.csv”的 CSV 文件,但不包括索引列

 

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import norm
df=pd.read_csv('D:\pythonproject\.py/random_data.csv')  #读取 CSV 文件
plt.figure(figsize=(10,5))
plt.hist(df['normal_distribution'],bins=100,density=True,alpha=1.0,color='g') #创建具有 100 个条柱的“normal_distribution”列的直方图。该参数对直方图进行归一化,并将条形的透明度设置为 1.0。条形的颜色设置为绿色 ('g')
mu,std=norm.fit(df['normal_distribution'])  #使用 SciPy 中的函数对数据拟合正态分布,并获取拟合分布的均值和标准差
xmin,xmax=plt.xlim()
x=np.linspace(xmin,xmax,100)
p=norm.pdf(x,mu,std)
plt.plot(x,p,'k',linewidth=2)  #生成一组x值并计算拟合正态分布的相应概率密度函数值,然后,它将拟合正态分布绘制为直方图顶部的黑线
plt.title('Normal Distribution Plot')  #添加标题并显示绘图
plt.show()

 

 

 决策树

from sklearn import tree
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
import pandas as pd
wine = load_wine()
pd.concat([pd.DataFrame(wine.data),pd.DataFrame(wine.target)],axis=1) #将 Wine 数据集中的数据和标签合并在一起

训练集和测试集 

Xtrain, Xtest, Ytrain, Ytest = train_test_split(wine.data,wine.target,test_size=0.3
#用 train_test_split 函数将 Wine 数据集划分为训练集和测试集,比例为 70% 训练集和 30% 测试集                                              
clf=tree.DecisionTreeClassifier(criterion="entropy") #创建了一个决策树分类器,并指定了使用熵作为分裂标准,entropy"表示使用信息熵
clf=clf.fit(Xtrain,Ytrain) #用训练集的数据 (Xtrain) 和标签 (Ytrain) 对决策树分类器进行训练
score=clf.score(Xtest,Ytest) #用测试集的数据和标签来评估分类器的性能,并将结果赋给 score 变量
score
0.9074074074074074

可视化 

import graphviz
feature_name = wine.feature_names
dot_data = tree.export_graphviz(clf,
                                feature_names=feature_names,
                                filled=True,  #在可视化时为节点添加颜色填充
                                rounded=True,  #填充和圆角
                                )

graph = graphviz.Source(dot_data)  #将 dot_data 转换为一个 graphviz 对象 graph,使其能够被渲染和显示
graph

预剪枝

缓解过拟合 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值