假设你有矩阵列表.以元素为基础计算元素均值矩阵的最方便方法是什么?假设我们有一个矩阵列表:
> A <- matrix(c(1:9), 3, 3)
> A
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> B <- matrix(c(2:10), 3, 3)
> B
[,1] [,2] [,3]
[1,] 2 5 8
[2,] 3 6 9
[3,] 4 7 10
> my.list <- list(A, B)
Run Code Online (Sandbox Code Playgroud)
所以期望的输出应该是:
[,1] [,2] [,3]
[1,] 1.5 4.5 7.5
[2,] 2.5 5.5 8.5
[3,] 3.5 6.5 9.5
Run Code Online (Sandbox Code Playgroud) 我在Stack Overflow上讨论了这个问题的帖子,但没有什么对我有用.我有以下CSS代码垂直对齐复选框/标签对:
body {
font-family: "lucida grande",tahoma,verdana,arial,sans-serif;
font-size: 11px;
margin: 0;
padding: 0;
}
fieldset {
line-height: 100%;
}
label {
display: inline-block;
vertical-align: baseline;
}
Run Code Online (Sandbox Code Playgroud)
完整的HTML代码在这里.
复选框/标签对在Mac OS X下的Safari(5.0.3)和Firefox(3.6.13)中正确垂直居中.在Chrome(Mac OS X)上,复选框略微呈现在顶部.在Windows操作系统上,复选框和关联标签与底部对齐(在不同的浏览器中一致:Firefox,Safari,Chrome和Internet Explorer 8).
有人可以解释一下为什么浏览器/操作系统之间会出现这种差异(以及如何避免它们)?
更新
在Mac下Chrome中垂直对齐复选框与标签的黑客攻击如下:
input[type=checkbox] {
position: relative;
top: 1px;
}
Run Code Online (Sandbox Code Playgroud)
现在需要实现操作系统和浏览器特定的条件...
我scale_colour_manual用来指定图例中可能的键.但是,如果我使用stat_function绘制自定义功能,则缺少图例.
任何想法为什么会这样?
library(ggplot2)
MyFun <- function(x, p) {
res <- x^(1 / p)
return(res)
}
my.df <-data.frame(x = c(0,1))
plt <- ggplot(my.df, aes(x=x)) +
stat_function(fun = MyFun, n = 1000, args = list(p = 10), colour = "red") +
stat_function(fun = MyFun, n = 1000, args = list(p = 3), colour = "blue") +
stat_function(fun = MyFun, n = 1000, args = list(p = 2), colour = "green") +
stat_function(fun = MyFun, n = 1000, args …Run Code Online (Sandbox Code Playgroud) 我使用以下代码创建并填充GuavaTable:
Table<String, String, Integer> table = HashBasedTable.create();
table.put("A", "B", 1);
table.put("A", "C", 2);
table.put("B", "D", 3);
Run Code Online (Sandbox Code Playgroud)
我想知道如何迭代表并打印每行的键和值?所以,期望的输出是:
A B 1
A C 2
B D 3
Run Code Online (Sandbox Code Playgroud) 我正在尝试实现以下(分裂)聚类算法(下面是算法的简短形式,完整描述可在此处获得):
从样本x开始,i = 1,...,n被视为n个数据点的单个簇和针对所有点对定义的相异度矩阵D. 修复阈值T以决定是否拆分集群.
首先确定所有数据点对之间的距离,并选择它们之间具有最大距离(Dmax)的对.
将Dmax与T进行比较.如果Dmax> T,则使用所选对作为两个新簇中的第一个元素,将单个簇分成两个.剩下的n - 2个数据点被放入两个新集群中的一个.如果D(x_i,x_l)<D(x_j,x_l),则将x_l添加到包含x_i的新集群中,否则将其添加到包含x_i的新集群中.
在第二阶段,在两个新簇之一中找到值D(x_i,x_j)以找到簇中具有它们之间的最大距离Dmax的对.如果Dmax <T,则群集的划分停止,并考虑另一个群集.然后,对从该迭代生成的聚类重复该过程.
输出是群集数据记录的层次结构.我恳请一下如何实现聚类算法的建议.
编辑1:我附加了定义距离(相关系数)的Python函数和在数据矩阵中找到最大距离的函数.
# Read data from GitHub
import pandas as pd
df = pd.read_csv('https://raw.githubusercontent.com/nico/collectiveintelligence-book/master/blogdata.txt', sep = '\t', index_col = 0)
data = df.values.tolist()
data = data[1:10]
# Define correlation coefficient as distance of choice
def pearson(v1, v2):
# Simple sums
sum1 = sum(v1)
sum2 = sum(v2)
# Sums of the squares
sum1Sq = sum([pow(v, 2) for v in v1])
sum2Sq = sum([pow(v, 2) for v …Run Code Online (Sandbox Code Playgroud) python cluster-analysis hierarchical-clustering data-structures
我想知道当图包含多个子图(在我的情况下为5×2)时如何设置子图的大小.无论我允许整个人物有多大,子图总是看起来很小.我希望能直接控制该图中子图的大小.代码的简化版本粘贴在下面.
import numpy as np
import matplotlib.pyplot as plt
x = np.random.randn(20)
y = np.random.randn(20)
fig = plt.figure(figsize=(20, 8))
for i in range(0,10):
ax = fig.add_subplot(5, 2, i+1)
plt.plot(x, y, 'o')
ax.xaxis.set_visible(False)
ax.yaxis.set_visible(False)
# x and y axis should be equal length
x0,x1 = ax.get_xlim()
y0,y1 = ax.get_ylim()
ax.set_aspect(abs(x1-x0)/abs(y1-y0))
plt.show()
fig.savefig('plot.pdf', bbox_inches='tight')
Run Code Online (Sandbox Code Playgroud) 假设我们的XML文件结构如下.
<?xml version="1.0" ?>
<searchRetrieveResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/zing/srw/ http://www.loc.gov/standards/sru/sru1-1archive/xml-files/srw-types.xsd" xmlns="http://www.loc.gov/zing/srw/">
<records xmlns:ns1="http://www.loc.gov/zing/srw/">
<record>
<recordData>
<record xmlns="">
<datafield tag="000">
<subfield code="a">123</subfield>
<subfield code="b">456</subfield>
</datafield>
<datafield tag="001">
<subfield code="a">789</subfield>
<subfield code="b">987</subfield>
</datafield>
</record>
</recordData>
</record>
<record>
<recordData>
<record xmlns="">
<datafield tag="000">
<subfield code="a">123</subfield>
<subfield code="b">456</subfield>
</datafield>
<datafield tag="001">
<subfield code="a">789</subfield>
<subfield code="b">987</subfield>
</datafield>
</record>
</recordData>
</record>
</records>
</searchRetrieveResponse>
Run Code Online (Sandbox Code Playgroud)
我需要解析:
我想知道如何使用lxml和XPath.粘贴在下面是我的初始代码,我恳请有人解释我,如何解析价值.
import urllib, urllib2
from lxml import etree
url = "https://dl.dropbox.com/u/540963/short_test.xml"
fp = urllib2.urlopen(url)
doc = etree.parse(fp)
fp.close()
ns = {'xsi':'http://www.loc.gov/zing/srw/'}
for …Run Code Online (Sandbox Code Playgroud) 许多书籍使用下图说明了Fisher线性判别分析的概念(这个特别来自模式识别和机器学习,第188页)
我想知道如何用R(或任何其他语言)重现这个数字.下面粘贴的是我在R中的初始努力.我模拟两组数据并使用abline()函数绘制线性判别式.欢迎任何建议.
set.seed(2014)
library(MASS)
library(DiscriMiner) # For scatter matrices
# Simulate bivariate normal distribution with 2 classes
mu1 <- c(2, -4)
mu2 <- c(2, 6)
rho <- 0.8
s1 <- 1
s2 <- 3
Sigma <- matrix(c(s1^2, rho * s1 * s2, rho * s1 * s2, s2^2), byrow = TRUE, nrow = 2)
n <- 50
X1 <- mvrnorm(n, mu = mu1, Sigma = Sigma)
X2 <- mvrnorm(n, mu = mu2, Sigma = Sigma)
y …Run Code Online (Sandbox Code Playgroud) (这篇文章是我之前关于分裂层次聚类算法的问题的延续.)
问题是如何用Python(或任何其他语言)实现此算法.
算法描述
分裂聚类通过一系列连续分裂进行.在步骤0,所有对象在一个集群中.在每个步骤中,分割簇,直到步骤中n - 1所有数据对象分开(形成n簇,每个簇具有单个对象).
每一步把一个集群,让我们叫它R为两个集群A和B.最初,A等于R并且B是空的.在第一阶段,我们必须将一个对象移动A到B.对于每个对象i的A,我们计算的平均相异于所有其他对象A:
i'上面的等式达到其最大值的对象将被移动,所以我们把
在下一阶段,我们寻找其他的点,从移动A到B.只要A仍然包含多个对象,我们就会计算
对于每个对象i,A我们考虑i''最大化此数量的对象.当上面等式的最大值严格为正时,我们i''从中移动A到B然后查找A可能被移动的另一个对象的新值.在另一方面,当差的最大值为负或0我们停止该过程和划分R成A和B被完成.
在分裂算法的每一步,我们还必须决定要分割哪个群集.为此,我们计算直径
对于Q上一步之后可用的每个群集,并选择直径最大的群集.
我的起始代码粘贴在下面.实际上脚本返回ValueError: list.remove(x): x not in list.
# Dissimilarity matrix …Run Code Online (Sandbox Code Playgroud) 下面粘贴的是一个bash脚本,结合expect代码,其中:
如果传递的参数有效(即$host、$user、 和$pass),则一切正常。如果其中之一不正确,脚本将挂起。我想知道如果用户名(或密码)不正确,如何包含一些错误处理(例如,在 $cmd1 中)以终止带有消息的脚本?
在此先感谢您的指点。
#!/bin/bash
prog=$(basename $0)
NO_ARGS=0
E_OPTERROR=85
# Script invoked with no command-line args?
if [ $# -eq "$NO_ARGS" ]; then
echo "Usage: $prog [-h host] [-u username] [-p password]"
echo " $prog -help for help."
exit $E_OPTERROR
fi
showhelp() {
echo "Usage: $prog [-h host] [-u username] [-p password]"
echo " -h: host" …Run Code Online (Sandbox Code Playgroud)