我可以在书中或维基百科上找到关于数据挖掘的技术解释,但我想知道它究竟涉及哪种开发?是否更多地使用工具或更多关于编写工具?在研发方面,它与其他领域真的有什么不同吗?
在这个答案的后续内容中,我想问一下你们是否知道任何好的(更重要的是易于理解)教程和/或使用Weka工具包进行数据挖掘的例子.
自从我第一次听说它及其可以做的事情以来,我一直对数据挖掘非常感兴趣,我也有一些实验,我想用我的一些数据做,我已经买了四个书和我发现特别有趣的以下两个:
智能数据分析http://ecx.images-amazon.com/images/I/41CJNXchMrL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_.jpg 数据挖掘http://ecx.images- amazon.com/images/I/61DhYb1Z6QL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_.jpg
最后一个是由Weka的同一个作者写的,包含了很多例子,但我发现它有点难以理解逻辑,特别是数学.我的数学技能目前非常粗糙,我计划今年去大学,希望我能学习并能够更好地理解所涉及的数学,但在那之前我想在数据挖掘中获得一些练习.
有没有我可以阅读的示例数据的分步教程让我开始使用Weka工具包?
我正在尝试实现一种天真的bayseian方法来查找给定文档或单词流的主题.是否有朴素贝叶斯方法,我可以找到这个?
此外,我正在尝试改进我的字典,因为我继续.最初,我有一堆映射到主题的单词(硬编码).取决于已映射的单词以外的单词的出现次数.根据这些单词的出现,我想将它们添加到映射中,从而改进和学习映射到主题的新单词.并且还改变了单词的概率.
我该怎么做呢?我的方法是正确的吗?
哪种编程语言最适合实现?
关于异常值检测,我有几组问题:
我们可以使用k-means找到异常值,这是一个好方法吗?
是否有任何聚类算法不接受用户的任何输入?
我们可以使用支持向量机或任何其他监督学习算法进行异常值检测吗?
每种方法的优缺点是什么?
如果你已经对搜索API做了任何认真的研究,你就会知道他们中的大多数都有大量的TOS/TOU限制,这使得他们几乎不可能在除了最愚蠢的应用程序之外的任何东西中使用.
Bing的2.0 API,Yahoo Search BOSS,Google Places,Google AJAX Search(死机)等对我们来说太过限制了.我需要一次运行有限且相对较少的查询(可能是500k),从结果中存储特定数据以便在我们的应用程序中使用.
例如,我们需要将业务名称与其目标网站进行匹配(我们已经编写了算法,以便在必要时从一组结果中进行"最佳猜测";我们只需要一个vanilla结果集).此外,我们需要将地址与该公司的地址相匹配.
不幸的是,我可以找到ZERO搜索API,它允许我们以程序化,非用户启动的方式启动查询.
我们甚至非常渴望给某人一些冷酷的现金来获取这类数据; 谷歌,必应,雅虎和其他人似乎根本不想要我们的钱(由他们的TOS证明)......
有什么想法吗?
我知道scikit-learn中的计算是基于NumPy所以一切都是矩阵或数组.
该包如何处理混合数据(数值和名义值)?
例如,产品可以具有属性"颜色"和"价格",其中颜色是名义上的,价格是数字.我注意到有一个名为'DictVectorizer'的模型来计算名义数据.例如,两个产品是:
products = [{'color':'black','price':10}, {'color':'green','price':5}]
Run Code Online (Sandbox Code Playgroud)
而'DictVectorizer'的结果可能是:
[[1,0,10],
[0,1,5]]
Run Code Online (Sandbox Code Playgroud)
如果属性'color'有许多不同的值,则矩阵将非常稀疏.长特征会降低某些算法的性能,例如决策树.
有没有办法使用标称值而无需创建虚拟代码?
我可以对R中的方法使用一些建议来确定最佳簇数,然后用不同的统计标准描述簇.我是R的新手,具有关于聚类分析统计基础的基本知识.
确定簇数的方法:在文献中,一种常用的方法是所谓的"Elbow-criterion",它比较不同簇解的平方差和(SSD).因此,SSD在分析中针对Cluster的数量绘制,并且通过识别图中的"肘"来确定最佳簇数(例如,这里:https://en.wikipedia.org/wiki/File:DataClustering_ElbowCriterion. JPG)这种方法是获得主观印象的第一种方法.因此,我想在R中实现它.互联网上的信息很少.这里有一个很好的例子:http://www.mattpeeples.net/kmeans.html作者还做了一个有趣的迭代方法,看看在多次重复聚类过程之后肘是否在某种程度上是稳定的(尽管如此,它是用于分区聚类方法而不是分层).文献中的其他方法包括所谓的"停止规则".MILLIGAN&COOPER相比,在他们的论文,这些停止规则30"用于确定数据集簇的数目程序的审查"(可在这里:http://link.springer.com/article/10.1007%2FBF02294245)发现Calinski和Harabasz的停止规则在蒙特卡洛评估中提供了最好的结果.在R中实现这一点的信息甚至更为稀疏.因此,如果有人曾经实施过这个或另一个停止规则(或其他方法),那么一些建议会非常有用.
统计描述聚类:为了描述聚类,我想使用均值和某种方差标准.我的数据是关于农业用地的数据,并显示每个市的不同作物的产量数量.我的目标是在我的数据集中找到类似的土地利用模式.
我为一个对象子集生成了一个脚本来进行第一次测试运行.它看起来像这样(脚本中的步骤解释,下面的来源).
#Clusteranalysis agriculture
#Load data
agriculture <-read.table ("C:\\Users\\etc...", header=T,sep=";")
attach(agriculture)
#Define Dataframe to work with
df<-data.frame(agriculture)
#Define a Subset of objects to first test the script
a<-df[1,]
b<-df[2,]
c<-df[3,]
d<-df[4,]
e<-df[5,]
f<-df[6,]
g<-df[7,]
h<-df[8,]
i<-df[9,]
j<-df[10,]
k<-df[11,]
#Bind the objects
aTOk<-rbind(a,b,c,d,e,f,g,h,i,j,k)
#Calculate euclidian distances including only the columns 4 to 24
dist.euklid<-dist(aTOk[,4:24],method="euclidean",diag=TRUE,upper=FALSE, p=2)
print(dist.euklid)
#Cluster with Ward
cluster.ward<-hclust(dist.euklid,method="ward")
#Plot the dendogramm. define …Run Code Online (Sandbox Code Playgroud) 在NLP中,停用词移除是典型的预处理步骤.它通常是基于我们认为停止词应该是什么的经验方式来完成的.
但在我看来,我们应该概括一下停止词的概念.对于来自不同领域的语料库,停止词可能会有所不同.我想知道我们是否可以在数学上定义停用词,例如通过其统计特征.然后我们可以自动从特定域的语料库中提取停用词.
对此有任何类似的想法和进展吗?谁能解开一些光明?
我正在比较同构的一大组networkx图,其中大多数图不应该是同构的(例如,假设0-20%与列表中的某些东西是同构的).
我尝试了以下方法.
graphs = [] # A list of networkx graphs
unique = [] # A list of unique graphs
for new in graphs:
for old in unique:
if nx.is_isomorphic(new, old[0]):
break
else:
unique.append([new])
Run Code Online (Sandbox Code Playgroud)
这让我得到了一个更快的缩小集,但我仍然发现它太慢而不适合理想使用.是否有一些更快的算法来处理这类问题(比较传递交换属性对)或将此算法扩展到多核设置(在20核机器上运行)的方法.
我已经过滤这些集合基于节点/边的数量数据,我们可以假设nx.is_isomorphic功能不能进行任何过滤类型的操作速度更快.我现在也无法轻松更改工具,因此使用编译包不是一种选择.
附加信息:
图形倾向于大约16-20个节点,总共24-48个边缘,存在大量互连,因此每个节点具有大约8个边缘.每个边缘也都有标记,但是只使用了2-3种边缘.
我的情况
说我有成千上万的对象,在这个例子中可能是电影.
我以很多不同的方式解析这些电影,收集有关每个电影的参数,关键字和统计数据.我们称他们为钥匙.我还为每个键分配一个权重,范围从0到1,具体取决于频率,相关性,强度,分数等.
作为一个例子,这里是电影世界末日的几个键和权重:
"Armageddon"
------------------
disaster 0.8
bruce willis 1.0
metascore 0.2
imdb score 0.4
asteroid 1.0
action 0.8
adventure 0.9
... ...
Run Code Online (Sandbox Code Playgroud)
可能有成千上万的这些键和重量,为清楚起见,这是另一部电影:
"The Fast and the Furious"
------------------
disaster 0.1
bruce willis 0.0
metascore 0.5
imdb score 0.6
asteroid 0.0
action 0.9
adventure 0.6
... ...
Run Code Online (Sandbox Code Playgroud)
我把它称为电影的指纹,我想用它们在我的数据库中查找类似的电影.
我还想象如果我愿意,可以插入除电影之外的其他内容,如文章或Facebook个人资料,并为其指定指纹.但那不应该影响我的问题.
我的问题
所以我已经走到了这一步,但现在我觉得这部分很棘手.我想把上面的指纹变成容易比较和快速的东西.我尝试创建一个数组,其中index 0= disaster,1= bruce willis,2= metascore,它们的值是权重.
我上面的两部电影就是这样的:
[ 0.8 , 1.0 , 0.2 , ... ] …Run Code Online (Sandbox Code Playgroud) data-mining ×10
nlp ×2
python ×2
algorithm ×1
api ×1
bigdata ×1
c# ×1
mixed ×1
naivebayes ×1
networkx ×1
outliers ×1
r ×1
scikit-learn ×1
search ×1
sql ×1
svm ×1
text-mining ×1
weka ×1