我是AI的新手.我正在通过机器学习来处理文本分类的应用程序.应用程序需要对HTML文档的不同部分进行分类.例如,大多数网页都有头部,菜单,侧边栏,页脚,主要内容等.我想使用文本分类器对HTML文档的这些部分进行分类,并在页面上标识不同类型的表单.
我正在寻找有关代码和实现的更多技术建议.
我可以为html标签属性分配标签,例如class或id
<div class="menu-1">
<div id="entry">
<div id="content">
<div id="footer">
<div id="comment-12">
<div id="comment-title">
Run Code Online (Sandbox Code Playgroud)
喜欢第一项:
TrainClassifier(标签:"菜单",值:"menu-1",属性:"class",position-in-string:"21%",tag:"div");
输入:
产量
什么神经网络库,可以采取上述输入,并将它们分类到标签(即菜单).
所有用户都无法创建正则表达式或xpath,他们需要更简单的方法,因此重要的是,要使软件智能化,用户可以使用webbrowser控件突出显示他/她需要的部分html文档,并训练软件直到它可以独自工作.
但我不知道如何使用AI制作软件列车,
我正在寻找的AI,就像它应该能够接受各种输入,并在此基础上进行分类,正如我已经说过AI的新内容,对它不太了解.
如果我能回答我提出的问题,比如我应该使用哪个库,以及如何实现,建议使用Xpath或Regex或其他方法的答案,那么对我来说会有所帮助.建议,但你需要的.
我试图用C#中的高斯朴素贝叶斯来实现点的分类.我已经实现了第一部分(http://www.statsoft.com/textbook/naive-bayes-classifier/)概率部分,但我不明白如何实现高斯朴素贝叶斯算法的正态模型.这是我的代码:
class NaiveBayesClassifier
{
private List<Point> listTrainPoints = new List<Point>();
private int totalPoints = 0;
public NaiveBayesClassifier(List<Point> listTrainPoints)
{
this.listTrainPoints = listTrainPoints;
this.totalPoints = this.listTrainPoints.Count;
}
private List<Point> vecinityPoints(Point p, double maxDist)
{
List<Point> listVecinityPoints = new List<Point>();
for (int i = 0; i < listTrainPoints.Count; i++)
{
if (p.distance(listTrainPoints[i]) <= maxDist)
{
listVecinityPoints.Add(listTrainPoints[i]);
}
}
return listVecinityPoints;
}
public double priorProbabilityFor(double currentType)
{
double countCurrentType = 0;
for (int i = 0; i < this.listTrainPoints.Count; i++)
{ …Run Code Online (Sandbox Code Playgroud) 我有一个大的哲学论证数据集,每个参数都连接到其他参数作为给定语句的证明或反证.根声明可以有许多证明和反证,每个都可能有证明和反证.语句也可用于多个图形,并且可以在"给定上下文"或假设下分析图形.
我需要构建一个相关参数的贝叶斯网络,以便每个节点公平准确地传播影响它的连接参数; 我需要能够同时计算连接节点链的概率,每个节点都需要数据存储区查找,必须阻止才能获得结果; 该进程主要是I/O绑定,我的数据存储连接可以在java,go和python {google appengine}中异步运行.每次查找完成后,它会将效果传播到所有其他连接节点,直到概率增量低于不相关阈值{当前为0.1%}.进程的每个节点必须计算连接链,然后总结所有查询中的所有结果以调整有效性结果,结果向外链接到任何连接的参数.
为了避免无限重复,我想在goroutines中使用类似A*的过程将更新传播到参数映射,使用基于复合影响的启发式方法,一旦影响概率低于0.1%,就会忽略节点.我曾尝试使用SQL触发器设置计算,但它过于复杂和混乱.然后我转移到谷歌appengine利用异步nosql,它更好,但仍然太慢.我需要足够快地运行更新以获得快速的UI,因此当用户创建或投票赞成或反对证明或反证时,他们可以立即看到结果反映在UI中.
我认为Go是支持我需要的并发性的首选语言,但我愿意接受建议.客户端是一个单片的javascript应用程序,它只使用XHR和websockets实时推送和拉出参数映射{及其更新}.我有一个可以在10到15秒内计算大型链的java原型,但是对性能的监控表明我的大部分运行时都浪费在ConcurrentHashMap的同步和开销上.
如果还有其他高度并发的语言值得尝试,请告诉我.我知道java,python,go,ruby和scala,但如果它符合我的需要,它会学习任何语言.
同样,如果有大型贝叶斯网络的开源实现,请留下建议.
最近我学习了贝叶斯线性回归模型,但我感到困惑的是在哪种情况下我们应该使用线性回归,何时使用贝叶斯版本.这两个表现怎么样?并且贝叶斯逻辑回归和逻辑回归是一样的吗?我读了一篇关于使用贝叶斯概率回归来预测广告点击率的论文,我只是想知道为什么要使用贝叶斯版本?
我在这里发布了一个python笔记本:http://nbviewer.ipython.org/gist/awellis/9067358
我正在尝试使用PyMC 3创建一个probit回归模型,使用生成的数据来恢复已知参数(参见笔记本).拦截的估计几乎没有,但是斜率估计是偏离标记的.
我的模型看起来像这样:
with pm.Model() as model:
# priors
alpha = pm.Normal('alpha', mu=0, tau=0.001)
beta = pm.Normal('beta', mu=0, tau=0.001)
# linear predictor
theta_p = (alpha + beta * x)
# logic transform (just for comparison - this seems to work ok)
# def invlogit(x):
# import theano.tensor as t
# return t.exp(x) / (1 + t.exp(x))
# theta = invlogit(theta_p)
# Probit transform: this doesn't work
def phi(x):
import theano.tensor as t
return 0.5 * (1 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用MCMCglmmR中的包创建模型
数据结构如下,其中二元,焦点,其他都是随机效应,预测1-2是预测变量,响应1-5是捕获不同子类型的观察行为#的结果变量:
dyad focal other r present village resp1 resp2 resp3 resp4 resp5
1 10101 14302 0.5 3 1 0 0 4 0 5
2 10405 11301 0.0 5 0 0 0 1 0 1
…
Run Code Online (Sandbox Code Playgroud)
所以只有一个结果(教学)的模型如下:
prior_overdisp_i <- list(R=list(V=diag(2),nu=0.08,fix=2),
G=list(G1=list(V=1,nu=0.08), G2=list(V=1,nu=0.08), G3=list(V=1,nu=0.08), G4=list(V=1,nu=0.08)))
m1 <- MCMCglmm(teaching ~ trait-1 + at.level(trait,1):r + at.level(trait,1):present,
random= ~idh(at.level(trait,1)):focal + idh(at.level(trait,1)):other +
idh(at.level(trait,1)):X + idh(at.level(trait,1)):village,
rcov=~idh(trait):units, family = "zipoisson", prior=prior_overdisp_i,
data = data, nitt = nitt.1, thin = 50, burnin = 15000, …Run Code Online (Sandbox Code Playgroud) 我仍在学习PYMC3,但是我在文档中找不到以下问题的任何内容。考虑这个问题的贝叶斯结构时间序列(BSTS)模型,没有季节性。可以在PYMC3中对其进行建模,如下所示:
import pymc3, numpy, matplotlib.pyplot
# generate some test data
t = numpy.linspace(0,2*numpy.pi,100)
y_full = numpy.cos(5*t)
y_train = y_full[:90]
y_test = y_full[90:]
# specify the model
with pymc3.Model() as model:
grw = pymc3.GaussianRandomWalk('grw',mu=0,sd=1,shape=y_train.size)
y = pymc3.Normal('y',mu=grw,sd=1,observed=y_train)
trace = pymc3.sample(1000)
y_mean_pred = pymc3.sample_ppc(trace,samples=1000,model=model)['y'].mean(axis=0)
fig = matplotlib.pyplot.figure(dpi=100)
ax = fig.add_subplot(111)
ax.plot(t,y_full,c='b')
ax.plot(t[:90],y_mean_pred,c='r')
matplotlib.pyplot.show()
Run Code Online (Sandbox Code Playgroud)
现在,我想预测接下来10个时间步的行为,即y_test。我还想在此区域包括产生贝叶斯锥的可靠区域,例如,请参见此处。不幸的是,在上述连接中产生锥体的机构有点模糊。在更传统的AR模型中,人们可以学习平均回归系数并手动扩展平均曲线。但是,在此BSTS模型中,没有明显的方法来执行此操作。或者,如果存在回归变量,则可以使用theano.shared并使用更细/扩展的网格对其进行更新,以使用sample_ppc进行插补和推断,但这在此设置中并不是真正的选择。也许sample_ppc在这里是个红鲱鱼,但尚不清楚如何进行其他操作。任何帮助都将受到欢迎。
我对"Dirichlet过程作为聚类数量的先验分布的无限混合模型"的理解是,当聚合到一定数量的聚类时,聚类的数量由数据决定.
这个R Implementation https://github.com/jacobian1980/ecostates以这种方式决定集群的数量.虽然,R implementation使用Gibbs采样器,我不确定是否会影响这一点.
令我困惑的是n_components参数.n_components: int, default 1 :
Number of mixture components. 如果组件的数量由数据和Dirichlet过程确定,那么这个参数是什么?
最终,我想得到:
(1)每个样本的聚类分配;
(2)每个聚类的概率向量; 和
(3)每个样本的似然/对数似然.
看起来(1)是predict方法,(3)是score方法.但是,(1)的输出完全取决于n_components超参数.
我的道歉,如果这是一个幼稚的问题,我很新的贝叶斯编程,发现有Dirichlet Process在Scikit-learn,我想试试.
这是文档:http: //scikit-learn.org/stable/modules/generated/sklearn.mixture.DPGMM.html#sklearn.mixture.DPGMM
以下是一个使用示例:http: //scikit-learn.org/stable/auto_examples/mixture/plot_gmm.html
这是我天真的用法:
from sklearn.mixture import DPGMM
X = pd.read_table("Data/processed/data.tsv", sep="\t", index_col=0)
Mod_dpgmm = DPGMM(n_components=3)
Mod_dpgmm.fit(X)
Run Code Online (Sandbox Code Playgroud) 我是比较新的PYMC3,我试图实现贝叶斯结构时间序列(BSTS)没有回归系数,比如模型拟合这里在R.模型如下:
我可以使用GaussianRandomWalk来实现局部线性趋势,如下所示:
delta = pymc3.GaussianRandomWalk('delta',mu=0,sd=1,shape=99)
mu = pymc3.GaussianRandomWalk('mu',mu=delta,sd=1,shape=100)
Run Code Online (Sandbox Code Playgroud)
但是,我对如何在PYMC3中编码季节性变量(tau)感到困惑。我是否需要参加自定义的随机游走课程,还是有其他技巧?
这是我在 CatBoost 中应用 BayesSearch 的尝试:
from catboost import CatBoostClassifier
from skopt import BayesSearchCV
from sklearn.model_selection import StratifiedKFold
# Classifier
bayes_cv_tuner = BayesSearchCV(
estimator = CatBoostClassifier(
silent=True
),
search_spaces = {
'depth':(2,16),
'l2_leaf_reg':(1, 500),
'bagging_temperature':(1e-9, 1000, 'log-uniform'),
'border_count':(1,255),
'rsm':(0.01, 1.0, 'uniform'),
'random_strength':(1e-9, 10, 'log-uniform'),
'scale_pos_weight':(0.01, 1.0, 'uniform'),
},
scoring = 'roc_auc',
cv = StratifiedKFold(
n_splits=2,
shuffle=True,
random_state=72
),
n_jobs = 1,
n_iter = 100,
verbose = 1,
refit = True,
random_state = 72
)
Run Code Online (Sandbox Code Playgroud)
跟踪结果:
def status_print(optim_result):
"""Status callback durring bayesian …Run Code Online (Sandbox Code Playgroud)