假设我正在检查多达10个集群,scipy我通常生成"肘部"图,如下所示:
from scipy import cluster
cluster_array = [cluster.vq.kmeans(my_matrix, i) for i in range(1,10)]
pyplot.plot([var for (cent,var) in cluster_array])
pyplot.show()
Run Code Online (Sandbox Code Playgroud)
我已经开始使用sklearn进行聚类,但是我不知道如何在scipy情况下创建绘制所需的数组.我最好的猜测是:
from sklearn.cluster import KMeans
km = [KMeans(n_clusters=i) for i range(1,10)]
cluster_array = [km[i].fit(my_matrix)]
Run Code Online (Sandbox Code Playgroud)
遗憾的是,这导致了无效的命令错误.sklearn最好的方式是什么?
谢谢
我有兴趣将javascript驱动的图形放入我的jupyter笔记本文件中作为div.该网站使用代码魔术方法,并直接在jupyter笔记本单元格中粘贴图形代码:
http://blog.thedataincubator.com/2015/08/embedding-d3-in-an-ipython-notebook/
但是,由于许多这样的javascript驱动图很冗长,我认为只需调用包含图形代码的javascript文件,然后将其作为jupyter笔记本中的div附加.这听起来很简单,但是由于所有的路径纵横交错,我让自己感到困惑,而且我不确定我尝试过的方法是否有效.
我试过了:
%%javascript
require.config({
paths: {
graph: 'filepath.js'
}
});
Run Code Online (Sandbox Code Playgroud)
这并没有抛出任何错误,但是当我无法附加任何div时.我想也许问题实际上是数据在python和js文件之间的链接方式.以上链接使用一种指向数据的方法,window.vizObj={}我想知道是否没有更简单的解决方案?
此外,还有一个转换库:http://mpld3.github.io/.当然,我并不反对,但为了说明,(和骄傲),我有点想深究这一点.请随时分享关于此事的任何/所有想法.
如果可能的话,请上传一个jupyter笔记本文件,这样我就可以看到如何从js文件中将js图形附加到jupyter笔记本中,以及如何指出数据.任何类型的图表都可以,也许是简单的d3.js折线图.
我有一个非常简单的页面和任务,但令我沮丧的是我无法让我的文本呈现正确的max-width. 我看过:读取 d3 文本元素的宽度,使某些内容转到页面下一行的 CSS 是什么?等等,但我仍然无法弄清楚。
svg 文本并没有很好地流向下一行,而是在页面上蔓延,直到超出范围。这是我的CSS和代码
var svg = d3.select('body').append('svg')
.attr('width', 300)
.attr('height', 200);
var textG = svg.append('g');
textG.append('text')
.attr('x', 20)
.attr('y', 30)
.attr('class', 'myText')
.text('This line should be about three to four lines long, but because I am so stupid I cannot make it do what I want it to do. Woe is me.');Run Code Online (Sandbox Code Playgroud)
.myText {
font-size: 1.3em;
fill: gray;
width:10%;
max-width:10%;
display:block;
}Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"> …Run Code Online (Sandbox Code Playgroud)我正在尝试在外部可视化平台上创建曲面图。我正在使用sklearn 决策树文档页面上的 iris 数据集。我也使用相同的方法来创建我的决策曲面图。我的最终目标不是 matplot lib 视觉对象,所以从这里我将数据输入到我的可视化软件中。要做到这一点,我刚打电话flatten()和tolist()上xx,yy并Z写下了包含这些列出了JSON文件。
问题是当我尝试绘制它时,我的可视化程序崩溃了。结果发现数据太大了。展平后,列表的长度大于 86,000。这是因为步长/绘图步长非常小.02。因此,根据模型的预测,它本质上是在数据的最小值和最大值的范围内逐步进行并绘制/填充。它有点像像素网格;我将大小缩小到只有 2000 的数组,并注意到坐标只是来回移动的线(最终包含整个坐标平面)。
问题:我可以检索决策边界线本身的 x,y 坐标吗(而不是遍历整个平面)?理想情况下,列表只包含每条线的转折点。或者,是否有其他完全不同的方式来重新创建这个图,以便它在计算上更有效率?
这可以通过将contourf()调用替换为countour():
我只是不知道如何获取有关这些线上的数据(通过xx,yy并Z或其他可能的方式?)。
注意:只要计算效率高,我对包含行格式的列表/或数据结构的确切格式并不挑剔。例如,对于上面的第一个图,一些红色区域实际上是预测空间中的孤岛,所以这可能意味着我们必须像处理它自己的线一样处理它。我猜只要该类与 x,y 坐标相结合,使用多少个数组(包含坐标)来捕获决策边界就无关紧要。
我有两个由20个对象数组组成的数组。像这样:
var array1 = [
[
{'x':0,'y':0},
{'x':0,'y':0}
],
[
{'x':1,'y':1},
{'x':1,'y':1}
],
...
[
{'x':19,'y':19},
{'x':19,'y':19}
]
];
var array2 = [
[
{'x':0,'y':0},
{'x':0,'y':0}
],
[
{'x':1,'y':1},
{'x':1,'y':1}
],
...
[
{'x':19,'y':19},
{'x':19,'y':19}
]
];
Run Code Online (Sandbox Code Playgroud)
我希望最终结果是:
[
[
{'x':0,'y':0},
{'x':0,'y':0},
{'x':0,'y':0},
{'x':0,'y':0}
],
...
];
Run Code Online (Sandbox Code Playgroud)
因此,我在每个数组中附加了两个项目,这意味着每个数组现在应包含四个对象。
我试过的是:
var array3 = array1;
array3.forEach(function(item,i) {
item.concat(array2[i])
})
Run Code Online (Sandbox Code Playgroud)
但是什么都没有追加
是否有一种更轻松的方法来反复合并物品?
有人问过与我所追求的类似但不完全相同的问题,例如Python 3: Removing an empty tuple from a list of tuples,但可以这么说,我仍然无法在两行之间阅读。
这是我的数据结构,包含字符串的元组列表
data
>>[
('1','1','2'),
('','1', '1'),
('2','1', '1'),
('1', '', '1')
]
Run Code Online (Sandbox Code Playgroud)
我想要做的是,如果元组中有一个空字符串元素,则从列表中删除整个元组。
我得到的最接近的是:
data2 = any(map(lambda x: x is not None, data))
Run Code Online (Sandbox Code Playgroud)
我以为这会给我一个真假列表,看看哪些是要丢弃的,但这只是一个布尔值。如果有更好/更简单的方法,请随意废弃这种方法。
我有我的许多SVG rects情节块.大多数我能够绘制并填充得很好,但是初始矩形不像我在彩色地图中那样是蓝色的:
var colorMap = {
0: "blue",
1: "red",
2: "yellow",
};
Run Code Online (Sandbox Code Playgroud)
console.log()表示正在传递正确的整数,并且该对象正在关联正确的颜色.我的csv中的其他列是浮点数,但我的颜色映射的值是整数.该列具有标题,id并取3个值中的1个:0,1或2.
我已经读过,当数字是浮点数而不是整数时,可能会发生此错误.但据我所知,它们都是整数.即使我的0条目不是整数(无论出于何种原因),为什么该列中的所有其他条目都能正常工作?如果让D3将某些数字识别为浮点数而将其他数字识别为同一列中的整数,那将是非常直观的.
也许它根本不是关于整数/浮点数,我可以忽略其他东西吗?
在一开始我有一个主列表,我打算将所有内容放入:
master_list = []
Run Code Online (Sandbox Code Playgroud)
我有数据存储在嵌套列表中,如下所示:
multi_list = [[1,2,3,4,5],[6,7,8,9,10]]
Run Code Online (Sandbox Code Playgroud)
最终结果需要将此数据转换为这样的dicts列表:
master_list
>> [{'x1':1,'x2':2,'y1':3,'y2':4,'id':5},{'x1':6,'x2':7,'y1':8,'y2':9,'id':10}]
Run Code Online (Sandbox Code Playgroud)
这就是我的最终目标.我实现这一目标的方法如下:
multi_list = [[1,2,3,4,5],[6,7,8,9,10]]
master_list = []
iterating_dict = {}
for n in multi_list:
for idx,i in enumerate(['x1','x2','y1','y2','id']):
iterating_dict[i] = n[idx]
master_list.append(iterating_dict)
master_list
>>[{'x1':6,'x2':7,'y1':8,'y2':9,'id':10},{'x1':6,'x2':7,'y1':8,'y2':9,'id':10}]
Run Code Online (Sandbox Code Playgroud)
最终发生的是第二项multi_list存储两次.我希望它存储所有项目的转换后的dicts multi_list.我认为这意味着它append不在循环的正确位置.但是,当我将它放在循环中时,它不会添加任何内容master_list.如果没有append超出范围,我不能再进一步.
在python中有哪些常规方法来解决这种困难?
我有我的项目的简化版本,我将其浓缩为以下代码段:
var margins = {top:20, bottom:300, left:100, right:100};
var height = 600;
var width = 1200;
var totalWidth = width+margins.left+margins.right;
var totalHeight = height+margins.top+margins.bottom;
var svg = d3.select('body')
.append('svg')
.attr('width', totalWidth)
.attr('height', totalHeight);
var graphGroup = svg.append('g')
.attr('transform', "translate("+margins.left+","+margins.top+")");
var data = [
{'manager':'ABC-CA', 'aum':230561804112.86996, 'type':'JV'},
{'manager':'AEGON-Industrial', 'aum':187676730861.82004, 'type':'JV'},
{'manager':'AVIC', 'aum':677643221.8599999, 'type':'DM'},
{'manager':'AXA-SPDB', 'aum':111220010833.66998, 'type':'JV'},
{'manager':'Baoying', 'aum':26328526612.41, 'type':'DM'},
{'manager':'Beixin Ruifeng', 'aum':10500065729.3, 'type':'JV'},
{'manager':'BOB-Scotiabank', 'aum':69159188249.67, 'type':'JV'},
{'manager':'BOC IM', 'aum':396466612963.73, 'type':'DM'},
{'manager':'BOCI Securities', 'aum':57940275708.97, 'type':'JV'}
];
var yExtents = d3.extent(data, function(d) {return …Run Code Online (Sandbox Code Playgroud)(假设现有投影/topojson)
我想要做的是在半径 (r) 以英里为单位的点 ([long,lat]) 处创建一个圆。我知道有一个 d3.geo 函数,但经过一些考虑,我认为它不会与我的特定应用程序非常兼容。
所以现在我正在寻找使用原生 svgcircle解决方案,其中 cx 和 cy 是纬度和经度,而 r 是以英里为单位的半径。我知道 cx 和 cy,但我不知道如何确保 r 是 15 英里。所以主要的是如何确保在像素空间中绘制半径时以英里为单位进行缩放。必须有某种方式使用该projection函数为半径设置适当的比例。但我没有在实践中看到这一点。
另外我应该指出,我的投影是动态的,取决于投影(包括比例)可以改变的用户事件。所以我不确定这是否会影响在现有投影的背景下如何缩放圆圈,但我想我会公开这一点,以确保安全。
python-3.x ×5
d3.js ×4
javascript ×4
python ×2
scikit-learn ×2
arrays ×1
css ×1
list ×1
loops ×1
matplotlib ×1
scipy ×1
svg ×1
topojson ×1
tuples ×1