目录
1.import 和 from … import 模块的变量、方法引用差异
2.python中出现' 'int' object is not callable'的错误
3.seaborn.heatmap(参数介绍)
4. pd.date_range()
5.pd.Series()
6.ARIMA建模的步骤
7.python 中with 用法
8.Python包中__init__.py作用
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --user tensorflow==1.15
我把这个放在前面,因为我习惯安装的时候会把TensorFlow安装,这个是在线下载的方式安装,还有离线安装 https://pypi.org/ ,需要什么可以自己下载
可能会遇到各种问题,百度应该都能搜到,我举个例子:
报错信息:protobuf requires Python '>=3.7' but the running Python is 3.6.5
解决方法:更新pip后重新安装tensorflow。
更新命令:python -m pip install --upgrade pip
安装各个包的方法,上面的镜像是清华大学的, --user不加有时候会报错
===================正式开始学习
这个是python小白记录的,本人才开始学这个,如果大神有什么疑义,请批评指正
from pandas import DataFrame from…import // 直接使用函数名使用就可以了
import pandas as pd import //模块.函数
a.import…as
import:导入一个模块;注:相当于导入的是一个文件夹,是个相对路径
import A as B:给予工具库 A 一个简单的别称 B ,可以帮助记忆。例:import torch.nn as nn;import torch as t
b.from…import
from…import:导入了一个模块中的一个函数;注:相当于导入的是一个文件夹中的文件,是个绝对路径。
例:如 from A import b,相当于
import A
b = A.b
import //模块.函数,导入模块,每次使用模块中的函数都要是定是哪个模块。
from…import // 直接使用函数名使用就可以了
from…import* // 是把一个模块中所有函数都导入进来; 注:相当于:相当于导入的是一个文件夹中所有文件,所有函数都是绝对路径。
示例:
模块 support.py:
def print_func( par ):
print "Hello : ", par
return
# 导入模块
import support
# 现在可以调用模块里包含的函数了
support.print_func("Runoob")
不能直接使用 print_func() 实现调用,必须将引入的模块名称当作一个对象,调用这个模块对象下的方法 print_func,这时才能实现调用
====================================================
# 导入模块
from support import *
# 现在可以调用模块里包含的函数了
print_func("Runoob")
可以直接使用 print_func() 实现调用
一般来说,推荐使用 import 语句,避免使用 from … import,因为这样可以使你的程序更加易读,也可以避免名称冲突。
python模块中__init__.py的作用_yucicheung的博客-CSDN博客
=======================================================================
在用spyder写python时,在某一行使用了len函数处提示’int’ object is not callable的错误。
原因是在Variable explorer中存在了一个名为len的变量,这个len变量是在运行别的脚本时定义的,把这个变量清空以后,程序便可正常运行。
所以以后在运行程序时,要养成先把Variable explorer中的变量先清空再运行的习惯。
=======================================================================
import seaborn as sns
fig, ax = plt.subplots(figsize=(9, 9))
sns.heatmap(pd.DataFrame(res),
annot=True, vmax=1, vmin=0, xticklabels=True, yticklabels=True, square=True, cmap="YlGnBu")
ax.set_title('test', fontsize=18)
plt.show()
import seaborn as sns
import numpy as np
data = np.array([[1,2,3],[4,5,6],[7,8,9]])
sns.heatmap(data,annot=True)
seaborn.heatmap(data, vmin=None, vmax=None, cmap=None, center=None, robust=False, annot=None, fmt='.2g', annot_kws=None, linewidths=0, linecolor='white', cbar=True, cbar_kws=None, cbar_ax=None, square=False, xticklabels='auto', yticklabels='auto', mask=None, ax=None, **kwargs)
不如先用最简单的,其实也是最核心的,这里的data
是最复杂的参数了,其他的只是用来装饰热力图的,那么这个热力图是用来干嘛的,
就是可视化一下已经有的数字,得到的 res = data.corr(method='spearman') 有很强的可视化效果
那么各个参数具体是什么意思
data:为核心参数,矩形数据集,显示主题图,其他都是装饰:
annot: 默认为False
,为True
的话,会在格子上显示数字
vmax, vmin: 热力图颜色取值的最大值,最小值,默认会从data
中推导
cmap:matplotlib 颜色条名称或者对象,或者是颜色列表,可选参数。从数据值到颜色空间的映射。 如果没有提供,默认值将取决于是否设置了“center” ,cmap="YlGnBu"
xticklabels, yticklabels:“auto”,布尔值,类列表值,或者整形数值,可选参数。如果是True,则绘制dataframe的列名。如果是False,则不绘制列名,默认为True
返回值:ax:matplotlib Axes
热力图的轴对象
square:布尔值,可选参数。如果为 True,则将坐标轴方向设置为“equal”,以使每个单元格为方形,默认为False
还有很多参数可参考这篇文章:seaborn.heatmap(参数介绍)_hongguihuang的博客-CSDN博客_heatmap参数
这里说一个bug,有时候画的图是半个显示,最上面的和最下面只有半个,据说是所用版本matplotlib的bug
解决办法如下:
ax = sns.heatmap(...);
#把这个直接加入到代码下面就可以了
bottom, top = ax.get_ylim()
ax.set_ylim(bottom + 0.5, top - 0.5)
=======================================================================
pd.date_range('1900-1-1', freq="D", periods=len4)
语法:pandas.date_range(start=None, end=None, periods=None, freq='D', tz=None, normalize=False, name=None, closed=None, **kwargs)
该函数主要用于生成一个固定频率的时间索引,在调用构造方法时,必须指定start、end、periods中的两个参数值,否则报错。
主要参数说明:
periods:固定时期,取值为整数或None
freq:日期偏移量,取值为string或DateOffset,默认为'D' (天)
normalize:若参数为True表示将start、end参数值正则化到午夜时间戳
name:生成时间索引对象的名称,取值为string或None
eg: a1 = pd.date_range('1900-1-1', freq="D", periods=10)
DatetimeIndex(['1900-01-01', '1900-01-02', '1900-01-03', '1900-01-04',
'1900-01-05', '1900-01-06', '1900-01-07', '1900-01-08',
'1900-01-09', '1900-01-10'],
dtype='datetime64[ns]', freq='D')
=======================================================================
series是一个一维数组,是基于NumPy的ndarray结构。Pandas会默然用0到n-1来作为series的index,但也可以自己指定index(可以把index理解为dict里面的key)
Series([data, index, dtype, name, copy, …])
pd.Series([list],index=[list])
import pandas as pd
index = ['a','b','c','f','e']
s=pd.Series([1,2,3,4,5],index)
print(s)
a 1
b 2
c 3
f 4
e 5
dtype: int64
=======================================================================
误差是白噪音的时候,model就ok了,就可以预测了
=======================================================================
在Python中,如果一个对象有__enter__和__exit__方法,就可以在with语句中使用它。
with块结束时会调用相应的__exit__中的代码.因此,我们不需要再写相应的代码去close,无论是因为什么原因结束with.
with open(...) as f:
print(f.readall())
等价于 ||
f = open(...)
print(f.readal())
f.close()
如果不使用with,考虑到f2可能会打开失败或者后续的操作会出错,我们可以需要这样去写:
f1 = open(...)
try:
f2 = open(...)
...
catch:
pass
else:
f2.close()
f1.close()
这样写出来太不优雅了,你得自己去捕获异常,手动关闭流、session等这些资源。
同时,我们还可以在一个with 语句中包括多个对象:
with open(...) as f1, open(...) as f2:
...
总结:
__init__.py的主要作用是:
1. Python中package的标识,不能删除
2. 定义__all__用来模糊导入
3. 编写Python代码(不建议在__init__中写python模块,可以在包中在创建另外的模块来写,尽量保证__init__.py简单)
python模块中__init__.py的作用_yucicheung的博客-CSDN博客
Python包中__init__.py作用 - Alvin_Xu - 博客园
loc函数:通过行索引 “Index” 中的具体值来取行数据(如取"Index"为"A"的行)
iloc函数:通过行号来取行数据(如取第二行的数据)
df.iloc["1", :] : 第一行的所有数据
df.loc['a'] :取索引为'a'的行
from gensim import corpora
from collections import defaultdict
import jieba
from gensim.corpora import Dictionary
wordslist = ["我在玉龙雪山","我喜欢玉龙雪山","我还要去玉龙雪山"]
# 切词
textTest = [[word for word in jieba.cut(words)] for words in wordslist]
# 生成字典
dictionary = Dictionary(textTest,prune_at=2000000)
for key in dictionary.iterkeys():
print (key,dictionary.get(key),dictionary.dfs[key])
dictionary.filter_extremes(no_below=5, no_above=0.5, keep_n=1000)
for key in dictionary.iterkeys():
print (key,dictionary.get(key),dictionary.dfs[key])
关键API讲解
dictionary.filter_n_most_frequent(N)
过滤掉出现频率最高的N个单词
dictionary.filter_extremes(no_below=5, no_above=0.5, keep_n=100000)
1.去掉出现次数低于no_below的
2.去掉出现次数高于no_above的。注意这个小数指的是百分数
3.在1和2的基础上,保留出现频率前keep_n的单词
dictionary.filter_tokens(bad_ids=None, good_ids=None)
有两种用法,一种是去掉bad_id对应的词,另一种是保留good_id对应的词而去掉其他词。注意这里bad_ids和good_ids都是列表形式
dictionary.compacity()
在执行完前面的过滤操作以后,可能会造成单词的序号之间有空隙,这时就可以使用该函数来对词典来进行重新排序,去掉这些空隙。
corpora.Dictionary 对象
可以理解为python中的字典对象, 其Key是字典中的词,其Val是词对应的唯一数值型ID
构造方法 Dictionary(documents=None, prune_at=2000000)
prune_at参数 起到控制向量的维数的作用
gensim corpora 和 dictionary 使用 (一)__yuki_的博客-CSDN博客_corpora函数
gensim的corpora.Dictionary_上进的菜鸟的博客-CSDN博客_gensim.corpora.dictionary
Gensim学习笔记-1--理解corpora.Dictionary_Mr_Hagrid的博客-CSDN博客_corpora.dictionary
http://www.voidcn.com/article/p-mjlmvwmn-pq.html
vector_a = np.mat(emb)
vector_b = np.mat(tp_emb)
num = float(vector_a * vector_b.T)
denom = np.linalg.norm(vector_a) * np.linalg.norm(vector_b)
cos = num / denom
sim = 0.5 + 0.5 * cos
#方法一:
import numpy as np
def cos_sim(vector_a, vector_b):
"""
计算两个向量之间的余弦相似度
:param vector_a: 向量 a
:param vector_b: 向量 b
:return: sim
"""
vector_a = np.mat(vector_a)
vector_b = np.mat(vector_b)
num = float(vector_a * vector_b.T)
denom = np.linalg.norm(vector_a) * np.linalg.norm(vector_b)
cos = num / denom
sim = 0.5 + 0.5 * cos
return sim
#方法二:
def cosine_similarity(x, y, norm=False):
""" 计算两个向量x和y的余弦相似度 """
# method 1
res = np.array([[x[i] * y[i], x[i] * x[i], y[i] * y[i]] for i in range(len(x))])
cos = sum(res[:, 0]) / (np.sqrt(sum(res[:, 1])) * np.sqrt(sum(res[:, 2])))
return 0.5 * cos + 0.5 if norm else cos # 归一化到[0, 1]区间内
https://www.jianshu.com/p/0c33c17770a0
python实现余弦近似度_昕玫的博客-CSDN博客
鬼吹灯文本挖掘4:LDA模型提取文档主题 sklearn LatentDirichletAllocation和gensim LdaModel_zhuzuwei的博客-CSDN博客