有人可以向我解释meshgrid
Numpy功能的目的是什么?我知道它会为绘图创建某种坐标网格,但我无法真正看到它的直接好处.
我正在学习Sebastian Raschka的"Python机器学习",他正在使用它来绘制决策边界.请参见此处的输入11 .
我也从官方文档中尝试过这段代码,但是,输出对我来说并没有多大意义.
x = np.arange(-5, 5, 1)
y = np.arange(-5, 5, 1)
xx, yy = np.meshgrid(x, y, sparse=True)
z = np.sin(xx**2 + yy**2) / (xx**2 + yy**2)
h = plt.contourf(x,y,z)
Run Code Online (Sandbox Code Playgroud)
如果可能的话,请向我展示很多现实世界的例子.
我可以通过以下代码在scikit中执行PCA:X_train有279180行和104列.
from sklearn.decomposition import PCA
pca = PCA(n_components=30)
X_train_pca = pca.fit_transform(X_train)
Run Code Online (Sandbox Code Playgroud)
现在,当我想将特征向量投影到特征空间时,我必须做到以下几点:
""" Projection """
comp = pca.components_ #30x104
com_tr = np.transpose(pca.components_) #104x30
proj = np.dot(X_train,com_tr) #279180x104 * 104x30 = 297180x30
Run Code Online (Sandbox Code Playgroud)
但我对此步骤犹豫不决,因为Scikit 文档说:
components_:array,[n_components,n_features]
特征空间中的主轴,表示数据中最大方差的方向.
在我看来,它已经被预测,但是当我检查源代码时,它只返回特征向量.
如何投影它的正确方法是什么?
最终,我的目标是计算重建的MSE.
""" Reconstruct """
recon = np.dot(proj,comp) #297180x30 * 30x104 = 279180x104
""" MSE Error """
print "MSE = %.6G" %(np.mean((X_train - recon)**2))
Run Code Online (Sandbox Code Playgroud) 我有一个pandas DataFrame,看起来大致如下:
cli_id | X1 | X2 | X3 | ... | Xn | Y |
----------------------------------------
123 | 1 | A | XX | ... | 4 | 0.1 |
456 | 2 | B | XY | ... | 5 | 0.2 |
789 | 1 | B | XY | ... | 5 | 0.3 |
101 | 2 | A | XX | ... | 4 | 0.1 |
...
Run Code Online (Sandbox Code Playgroud)
我有客户端ID,很少有分类属性,Y是事件的概率,其值从0到1乘以0.1.
我需要在每个组(10倍)的大小为200的Y中采取分层样本
在分成火车/测试时,我经常使用它来分层样本:
def stratifiedSplit(X,y,size):
sss …
Run Code Online (Sandbox Code Playgroud) 我在Pandas数据框中有一个Place,它看起来像这样:
**Place**
Berlin
Prague
Mexico
Prague
Mexico
...
Run Code Online (Sandbox Code Playgroud)
我想做以下事情:
is_Berlin is_Prague is_Mexico
1 0 0
0 1 0
0 0 1
0 1 0
0 0 1
Run Code Online (Sandbox Code Playgroud)
我知道我可以单独创建列:
df['is_Berlin'] = df['Place']
df['is_Prague'] = df['Place']
df['is_Mexico'] = df['Place']
Run Code Online (Sandbox Code Playgroud)
然后为每列创建一个字典并应用一个map函数.
#Example just for is_Berlin column
d = {'Berlin': 1,'Prague': 0,'Mexico': 0}
df['is_Berlin'] = df['is_Berlin'].map(d)
Run Code Online (Sandbox Code Playgroud)
但我觉得这有点单调乏味,我相信有很好的pythonic方式如何做到这一点.
我想根据我的 pandas 数据框绘制维恩图。我知道matplotlib_venn
接受集合作为输入。我的数据集包含客户端 ID 和另外两列,其中包含客户端是否参与活动的信息。
df_dataset = pd.read_csv('...path...',delimiter=',',decimal=',')
campaign_a = df_dataset[(df_dataset['CAM_A'] == 1)]
campaign_b = df_dataset[(df_dataset['CAM_B'] == 1)]
plt.figure(figsize=(4,4))
set1 = set(campaign_a['CLI_ID'])
set2 = set(campaign_b['CLI_ID'])
venn3([set1, set2], ('Set1', 'Set2'))
plt.show()
Run Code Online (Sandbox Code Playgroud)
但是我收到错误:
文件“C:\Python27\Lib\site-packages\matplotlib_venn_venn3.py”,第 44 行,在compute_venn3_areas 区域 = np.array(np.abs(diagram_areas), float)
TypeError:abs() 的操作数类型错误:“set”