- 博客(26)
- 收藏
- 关注
原创 Python注册器设计模式
注册器类比较关键,需要实现了好几个功能,各种模块的注册(内部函数_register_module负责具体注册的实现;外部函数register_module暴漏给编码人员,写代码的时候用)存储被注册的模块(类、函数、等),存在注册器类的字典中获取获取已注册对象,使用的是函数get,根据已经注册的对象的名称,得到具体的这个对象的实际实现的引用。实例化创建build函数,实例化被注册的模块。
2024-07-07 01:01:31
582
原创 Python类中的属性赋值,应该直接赋值还是选择使用object.__setattr__()进行赋值?
大多数情况下:直接赋值(self.attr = value)是推荐的方式,简单、直观、符合 Pythonic 风格。(self,name,value)函数进行赋值,从而避免隐式调用__setattr__函数的问题。可以看出,尽管我们使用的是给属性直接赋值的形式,实际上隐式调用了__setattr__函数。方法,赋值操作会调用这个自定义方法,这可能会包含额外的逻辑,如验证、日志记录等。所以,我们如果想避开递归调用,又想实现赋值时加入验证的操作,应使用object.方法会将值直接赋给对象的属性。
2024-06-21 23:43:35
456
原创 Python装饰器decorator(装饰器装饰函数、类,及高级编程技巧的实现案例详解)
装饰器是Python中一个非常强大的功能。强大在于:装饰函数(简单功能) 与 装饰类(包含多个高级功能)。
2024-06-18 00:54:28
3219
1
原创 plot(matplotlib.pyplot)绘图(网格点坐标矩阵绘制)
先解释:生成网格点坐标矩阵通俗理解:二维坐标下,形成的一个一个的网格点1、6个点的表示和绘制看到上述图中的点有 (0, 0,), (1, 0), (2, 0), (0, 1), (1, 1), (2, 1)那么,用矩阵或者二维数组表示为x = np.array([[0, 1, 2], [0, 1, 2]])y = np.array([[0, 0, 0], [1, 1, 1]])x,y每个元素相对应,即可表示上图6个点import numpy as npimport matplotlib.p
2022-05-01 14:36:38
2552
原创 矩阵点乘与叉乘的操作,python实现
1. 与线性代数中的矩阵乘法定义相同:np.dot()np.dot(A, B):对于二维矩阵,计算真正意义上的矩阵乘积,即A的i行元素与B的j列元素相乘的积的和作为新矩阵的(i, j)元素;对于一维矩阵(即向量),计算两向量的内积。相当于Matlab中的 *,也相当于线性代数中叉乘线性代数举例:Python代码举例import numpy as np# 2D array A: 2 x 3A = np.array([[1, 2, 3], [4, 5, 6]])# 2D array B: 3
2022-04-21 20:13:48
6037
原创 Octave工具学习
1基础octave:44> A = [1 2; 3 4; 5 6]A =1 23 45 6sz = size(A)3行2列size(A, 1) 表示行,3行。size(A, 2)表示列,2列。v = [1 2 3 4]然后键入 length(v),这个命令将返回最大维度的大小,返回 4加载文件load(‘featureX.dat’) 或者load featureX.datV= priceY(1:10)这表示的是将向量 𝑌的前 10 个元素存入 𝑉中。save
2022-04-14 22:32:13
833
原创 Excel中使用VLOOKUP函数实现多表之间关联搜索功能
Sheet1中,有学生姓名和学号这两列,假设学号是空的,想要根据sheet2的信息填补sheet1的学号,则公式为:=VLOOKUP(B3,Sheet2!A:B,2,FALSE)sheet2表为:VLOOKUP(B3,Sheet2!A:B,2,FALSE)VLOOKUP(要查找的值,查找区域,要返回的结果在查找区域的第几列,精确匹配或近似匹配)B3表示sheet1中的B3,Sheet2!A:B是区域,Sheet2表的A和B区域,FALSE表示精确查询。...
2022-04-10 21:04:52
3335
原创 朴素贝叶斯
1、定义:有些时间的概率事先是不知道的,但可以根据手上的资料和相应的经验来估计其发生的概率,这样的概率称为先验概率;如果是通过手上资料得到的,则称为客观先验概率,如果是通过经验(依规律总结)确定的概率,则称为主观先验概率。与先验概率相对应的就是后验概率,后验是通过贝叶斯公式和调查,对原先的先验概率进行修正,得到的更加准确的概率。如何确定后验概率?用朴素贝叶斯2、公式P(A∣B)=P(A)P(B∣A)P(B)P(A \mid B)=\frac{P(A) P(B \mid A)}{P(B)}P(A∣B)
2022-03-28 10:30:10
1015
原创 多项式回归2(Polynomial regression)
1、有了特征,构造出多项式特征,常用工具:PolynomialFeatures()#生成由所有多项式组合组成的新特征矩阵度小于或等于指定度的特性的#如:[a, b]的二次多项式特征为[1,a, b, a^2, ab, b^2]#PolynomialFeatures(degree=2, interaction_only=False, include_bias=True, order='C'),默认degree是2from sklearn.preprocessing import PolynomialF
2022-03-20 20:30:13
2711
原创 多项式回归1(Polynomial regression)
在线性回归中,我们是寻找一条直线来尽可能的拟合数据。但是我们在大部分情况下并不满足简单的线性回归的。如下图所示的这种特殊的线性回归的情况,这种特殊的回归方法被称为多项式回归(Polynomial regression)。from sklearn.preprocessing import PolynomialFeaturesfrom sklearn.linear_model import LinearRegressionimport numpy as npimport matplotlib.pypl
2022-03-20 16:36:37
2916
原创 2、Seaborn调色板使用。python绘图库Seaborn
导入库%matplotlib inlineimport numpy as npimport seaborn as snsimport matplotlib.pyplot as pltsns.set(rc={"figure.figsize": (6, 6)})#设置画布大小np.random.seed(sum(map(ord, "palettes")))1、使用调色板函数current_palettecurrent_palette = sns.color_palette(palette=No
2022-03-16 20:29:52
1688
原创 1、艺术化的图表控制。python绘图库Seaborn
导入库%matplotlib inline #jupyter notebook 中的魔法函数,如果不是使用该软件请使用plt.show()用于显示图像import numpy as npimport matplotlib as mplimport matplotlib.pyplot as pltnp.random.seed(sum(map(ord,"aesthetics"))) # 定义种子1、定义一个含偏移的正弦图像,来比较传统的matplotlib和seaborn的不同:def si
2022-03-16 15:48:46
790
原创 python的with语句
上下文管理协议(Context Management Protocol):包含方法 enter()和__exit__(),支持该协议的对象要实现这两个方法。上下文管理器(Context Manager):支持上下文管理协议的对象,这种对象实现了__enter__()和__exit__()方法。上下文管理器定义执行with语句时要建立的运行时上下文,负责执行with语句块上下文中的进入与退出操作。通常使用with语句调用上下文管理器,也可以通过直接调用其方法来使用。with语句基本用法:1 with E
2022-03-15 21:10:11
587
原创 plot(matplotlib.pyplot)绘图(柱状图)(箱线图)
导入数据import pandas as pdimport matplotlib.pyplot as pltreviews = pd.read_csv('fandango_scores.csv')cols = ['FILM', 'RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue']norm_reviews = reviews[cols]print(norm_reviews[:5])''' FILM
2022-03-10 20:46:41
509
原创 plot(matplotlib.pyplot)绘图(散点图)
取两列数据绘制散点图,需使用scatter函数import pandas as pdreviews = pd.read_csv('fandango_scores.csv')cols = ['FILM', 'RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars']#取一些列做新的数据norm_reviews = reviews[cols]print(norm_reviews
2022-03-10 19:03:13
972
原创 plot(matplotlib.pyplot)绘图(条状图)
使用数据地址:链接:https://pan.baidu.com/s/1wXtZRDcM-JKk_dIDRyd_dg?pwd=pyth提取码:pyth提取一些数据,用来绘图用import pandas as pdreviews = pd.read_csv('fandango_scores.csv')cols = ['FILM', 'RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_
2022-03-10 18:33:38
1151
原创 plot(matplotlib.pyplot)绘图操作(折线图绘制)
源数据文件(下岗数据)链接:https://pan.baidu.com/s/1JjaCdPKe704oWNjMUKiBuw?pwd=pyth提取码:pyth数据导入,数据形式查看import pandas as pdunrate = pd.read_csv('unrate.csv')unrate['DATE'] = pd.to_datetime(unrate['DATE'])print(unrate.head(12))''' DATE VALUE0 1948-01-01
2022-03-07 08:51:16
1431
原创 pandas中series对象
源数据为电影评分数据,原文件地址:其实拿出数据中的一列,就是series类型,链接:https://pan.baidu.com/s/1o1DQqAYr9QHqBZ52z4LMZw?pwd=pyth提取码:pythseries对象略像字典这种结构,因为带键值对(此处称为索引、值)import pandas as pdfandango = pd.read_csv('fandango_score_comparison.csv')series_film = fandango['FILM']print(
2022-03-06 23:51:54
442
原创 pandas库处理泰坦尼克数据
导入源文件import pandas as pdimport numpy as nptitanic_survival = pd.read_csv("titanic_train.csv")titanic_survival.head()计算Age字段空值的个数#The Pandas library uses NaN, which stands for "not a number", to indicate a missing value.#we can use the pandas.isnull
2022-03-06 13:52:59
896
原创 pandas库常用操作
import pandasfood_info = pandas.read_csv("food_info.csv")print(type(food_info))#<class 'pandas.core.frame.DataFrame'>print (food_info.dtypes)#每列数据的类型取前后几行first_rows = food_info.head()print (first_rows)#前五行0 1 2 3 4print(food_info.head(3))#前三行
2022-03-04 13:13:54
137
原创 numpy库中能够返回一些元素操作时的索引
返回每行或者每列最大值索引号的函数argmax,类似的还有argsort等import numpy as npdata = np.sin(np.arange(20)).reshape(5,4)print(data)ind = data.argmax(axis=0)#求每列的最大值的索引号[2 0 3 1]inc = data.argmax()#返回的是所有元素最大值的标号14print( ind)print( inc)data_max = data[ind, range(data.shap
2022-02-23 20:15:38
1030
原创 numpy库深拷贝(copy函数)与浅拷贝(view函数)
用等于号进行的复制不会复制真正的数据,而是让等号两边的对象指向同一块内存区域#Simple assignments make no copy of array objects or of their data.a = np.arange(12)b = a# a and b are two names for the same ndarray objectb is ab.shape = 3,4print(a.shape) #也是3,4 b改a也改,因为a=bprint(id(a))#2222
2022-02-23 19:11:58
920
原创 numpy库常用操作
import numpyworld_alcohol = numpy.genfromtxt("world_alcohol.txt", delimiter=",",dtype=str)#源地址、分隔符、数据类型print(type(world_alcohol))numbers = numpy.array([1, 2, 3, 4])numbers.dtype#dtype('int32')numbers = numpy.array([1, 2, 3, '4'])numbers.dtype#dtype
2022-02-23 18:34:04
299
原创 python路径单双斜杠、转义字符
在Python中,记录路径时有以下几种写法,如:(大家都知道\n是换行的意思)report_dir1=r‘C:\Local\Programs\Python\Python35\Lib\n_test’report_dir2=‘C:\Local\Programs\Python\Python35\Lib\n_test’report_dir3=‘C:/Local/Programs/Python/Python35/Lib/n_test’这三个路径的写法是等价的:report_dir1中加入r后,使得编译器不会
2022-02-20 22:28:03
2937
原创 This Python interpreter is in a conda environment
警告处理:Aconda装好后,cmd输入python出现了警告,告诉我们python在conda环境中,在外面使用有可能加载库不成功,没激活。解决:1、在命令行输入: conda info --envs 2、再输入CALL conda.bat activate3、conda activate D:\Anaconda3ok...
2020-03-06 00:36:34
476
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人