我使用python scikit-learn库在5000多个样本上拟合了k-means算法.我希望最接近集群中心的50个样本作为输出.我该如何执行此任务?
我用以下代码生成了一个2d强度矩阵:
H, x_e, y_e = np.histogram2d(test_y, test_x, bins=(y_e, x_e))
Run Code Online (Sandbox Code Playgroud)
x_e和y_e的值是:
x_e
array([ 0.05 , 0.0530303 , 0.05606061, 0.05909091, 0.06212121,
0.06515152, 0.06818182, 0.07121212, 0.07424242, 0.07727273,
0.08030303, 0.08333333, 0.08636364, 0.08939394, 0.09242424,
0.09545455, 0.09848485, 0.10151515, 0.10454545, 0.10757576,
0.11060606, 0.11363636, 0.11666667, 0.11969697, 0.12272727,
0.12575758, 0.12878788, 0.13181818, 0.13484848, 0.13787879,
0.14090909, 0.14393939, 0.1469697 , 0.15 , 0.1530303 ,
0.15606061, 0.15909091, 0.16212121, 0.16515152, 0.16818182,
0.17121212, 0.17424242, 0.17727273, 0.18030303, 0.18333333,
0.18636364, 0.18939394, 0.19242424, 0.19545455, 0.19848485,
0.20151515, 0.20454545, 0.20757576, 0.21060606, 0.21363636,
0.21666667, 0.21969697, 0.22272727, 0.22575758, 0.22878788,
0.23181818, 0.23484848, 0.23787879, …Run Code Online (Sandbox Code Playgroud) 例如,如果数组是[1,2,3,4],我希望输出为[1,2],[1,3],[1,4],[2,3],[2,4] ]和[3,4].
我想要一个比使用两个for循环的强力方法更好的解决方案.我该如何实现?
假设我有一个数据框 df:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.rand(12,4))
print(df)
0 1 2 3
0 71 64 84 20
1 48 60 83 61
2 48 78 71 46
3 65 88 66 77
4 71 22 42 58
5 66 76 64 80
6 67 28 74 87
7 32 90 55 78
8 80 42 52 14
9 54 76 73 17
10 32 89 42 36
11 85 78 61 12
Run Code Online (Sandbox Code Playgroud)
如何将 df …
我的问题相当简单:我想使用 Seaborn 模块可视化多个直方图,但是,由于许多箱包含的计数很少,我想使用对数刻度可视化垂直轴。
到目前为止我的代码:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.rand(100,2), columns=['A','B'])
df = pd.melt(df, var_name='Category')
g = sns.FacetGrid(df, col='Category', sharex=True, sharey=False, aspect=1.5)
g = g.map(plt.hist, "value", color="r")
Run Code Online (Sandbox Code Playgroud)
如何将垂直轴更改为对数刻度(以最“pythonic”/“seabornic”的方式)?我查看了各种答案,但对迄今为止找到的答案不满意。
更新:按照此处的 答案添加以下代码,使我的酒吧消失:
g.fig.get_axes()[0].set_yscale('log')
Run Code Online (Sandbox Code Playgroud)
更新二: 以下代码解决了我的问题:
df = pd.DataFrame(np.random.rand(100,2), columns=['A','B'])
df = pd.melt(df, var_name='Category')
g = sns.FacetGrid(df, col='Category', sharex=True, sharey=False, aspect=1.5)
g = g.map(plt.hist, "value", color="r", log=True)
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用spyder和python运行xgboost,但我不断收到此错误:
\n\nAttributeError: 模块 \xe2\x80\x98xgboost\xe2\x80\x99 没有属性 \xe2\x80\x98XGBRegressor\xe2\x80\x99
\n\n这是代码:
\n\nimport xgboost as xgb \n\nxgb.XGBRegressor(max_depth=3, learning_rate=0.1, n_estimators=100, silent=True, \n objective=\'reg:linear\', gamma=0, min_child_weight=1, \n max_delta_step=0, subsample=1, colsample_bytree=1, \n seed=0, missing=None)\nRun Code Online (Sandbox Code Playgroud)\n\n错误是
\n\nTraceback (most recent call last):\n\n File "<ipython-input-33-d257a9a2a5d8>", line 1, in <module>\n xgb.XGBRegressor(max_depth=3, learning_rate=0.1, n_estimators=100, silent=True,\n\nAttributeError: module \'xgboost\' has no attribute \'XGBRegressor\'\nRun Code Online (Sandbox Code Playgroud)\n\n我有\nPython 3.5.2 :: Anaconda 4.2.0 (x86_64)
\n\n我该如何解决这个问题?
\n我正在使用 Seaborn 库中的 violinplot 函数。有时外线是可视化的:

这些示例基于相同的代码,运行时间不同:
df = pd.DataFrame(np.random.randn(100, 4), columns=list('ABCD'))
sns.violinplot(data=df, order=list(df.columns), cut=0,inner='points', bw='silverman', split=True, color='limegreen')
plt.show()
Run Code Online (Sandbox Code Playgroud)
如何操作外线的格式?
我想列出Pandas数据框中所有列中的所有唯一值,并将它们存储在另一个数据框中。我已经尝试过了,但是明智地附加了行,我希望明智地按列。我怎么做?
raw_data = {'student_name': ['Miller', 'Miller', 'Ali', 'Miller'],
'test_score': [76, 75,74,76]}
df2 = pd.DataFrame(raw_data, columns = ['student_name', 'test_score'])
newDF = pd.DataFrame()
for column in df2.columns[0:]:
dat = df2[column].drop_duplicates()
df3 = pd.DataFrame(dat)
newDF = newDF.append(df3)
print(newDF)
Expected Output:
student_name test_score
Ali 74
Miller 75
76
Run Code Online (Sandbox Code Playgroud) 我在区间[0,1]中有2个45个值的系列.第一个系列是人工生成的标准,第二个系列是计算机生成的(完整系列在这里http://www.copypastecode.com/74844/).第一个系列逐渐排序.
0.909090909 0.216196598
0.909090909 0.111282099
0.9 0.021432587
0.9 0.033901106
...
0.1 0.003099256
0 0.001084533
0 0.008882249
0 0.006501463
Run Code Online (Sandbox Code Playgroud)
现在我要评估的是第二个系列中订单保留的程度,因为第一个系列是单调的.该Pearson相关是0.454763067,但我认为我们之间的关系不是线性的,所以这个值是难以解释.
一种自然的方法是使用Spearman等级相关,在这种情况下是0.670556181.我注意到随机值,当Pearson非常接近0时,Spearman等级相关性上升到0.5,所以0.67的值似乎非常低.
您将使用什么来评估这两个系列之间的顺序相似性?
我有一个从pandas数据帧生成的clustermap.其中两列用于生成簇图,我需要使用第三列使用sns.palplot(sns.light_palette('red'))调色板生成col_colors栏(值将为0 - 1,浅 - 深色).
伪代码看起来像这样:
df=pd.DataFrame(input, columns = ['Source', 'amplicon', 'coverage', 'GC'])
tiles = df.pivot("Source", "amplicon", "coverage")
col_colors = [values from df['GC']]
sns.clustermap(tiles, vmin=0, vmax=2, col_colors=col_colors)
Run Code Online (Sandbox Code Playgroud)
我正在努力寻找有关如何设置col_colors的详细信息,以便将正确的值链接到相应的tile.一些方向将不胜感激.
根据文档,我在 pandas 中制作了这个图:
import pandas as pd
import numpy as np
import pyplot as plt
df = pd.DataFrame(np.random.rand(140, 4), columns=['A', 'B', 'C', 'D'])
df['models'] = pd.Series(np.repeat(['model1','model2', 'model3', 'model4', 'model5', 'model6', 'model7'], 20))
plt.figure()
bp = df.boxplot(by="models")
Run Code Online (Sandbox Code Playgroud)
我怎样才能修改这个情节?
我想:
以及如何将此图另存为 pdf ?
python ×10
matplotlib ×4
pandas ×4
seaborn ×3
analysis ×1
arrays ×1
correlation ×1
histogram ×1
k-means ×1
list ×1
numpy ×1
pearson ×1
python-3.x ×1
regression ×1
scikit-learn ×1
shuffle ×1
spyder ×1
statistics ×1
xgboost ×1