我刚开始使用Word2vec,我想知道如何才能找到最接近向量的单词.我有这个向量,它是一组向量的平均向量:
array([-0.00449447, -0.00310097, 0.02421786, ...], dtype=float32)
是否有直接的方法在我的训练数据中找到与此向量最相似的单词?
或者唯一的解决方案是计算此向量与训练数据中每个单词的向量之间的余弦相似度,然后选择最接近的一个?
谢谢.
我想在同一列"Date"上加入到dataframe,代码如下:
import pandas as pd
from datetime import datetime
df_train_csv = pd.read_csv('./train.csv',parse_dates=['Date'],index_col='Date')
start = datetime(2010, 2, 5)
end = datetime(2012, 10, 26)
df_train_fly = pd.date_range(start, end, freq="W-FRI")
df_train_fly = pd.DataFrame(pd.Series(df_train_fly), columns=['Date'])
merged = df_train_csv.join(df_train_fly.set_index(['Date']), on = ['Date'], how = 'right', lsuffix='_x')
它抱怨数据帧df_train_csv没有名为"Date"的列.我想在数据框中将"Date"设置为索引,我想知道将date作为索引加入dataframe的最佳方法是什么?
那是样本数据
Date,Weekly_Sales
2010-02-05,24924.5
2010-02-12,46039.49
2010-02-19,41595.55
2010-02-26,19403.54
2010-03-05,21827.9
2010-03-12,21043.39
2010-03-19,22136.64
2010-03-26,26229.21
2010-04-02,57258.43
2010-04-09,42960.91
2010-04-16,17596.96
2010-04-23,16145.35
2010-04-30,16555.11
2010-05-07,17413.94
2010-05-14,18926.74
2010-05-21,14773.04
2010-05-28,15580.43
2010-06-04,17558.09
2010-06-11,16637.62
2010-06-18,16216.27
2010-06-25,16328.72
2010-07-02,16333.14
2010-07-09,17688.76
2010-07-16,17150.84
2010-07-23,15360.45
2010-07-30,15381.82
2010-08-06,17508.41
2010-08-13,15536.4
2010-08-20,15740.13
2010-08-27,15793.87
2010-09-03,16241.78
2010-09-10,18194.74
2010-09-17,19354.23
2010-09-24,18122.52
2010-10-01,20094.19 …我正在开发的一个开发人员正在开发一个程序来分析路面图像,以找到路面裂缝.对于他的程序找到的每个裂缝,它会在一个文件中生成一个条目,告诉我哪些像素组成了特定的裂缝.他的软件有两个问题:
1)它产生几个误报
2)如果他发现裂缝,他只能找到它的一小部分,并将这些部分表示为单独的裂缝.
我的工作是编写能够读取这些数据,分析数据并告知误报和实际裂缝之间差异的软件.我还需要确定如何将裂缝的所有小部分组合在一起.
我已经尝试了各种方法来过滤数据以消除误报,并且已经使用神经网络在有限的成功程度上将裂缝组合在一起.我知道会有错误,但截至目前,存在太多错误.有没有人对非AI专家有任何见解,以了解完成任务或了解更多信息的最佳方法?我应该阅读什么类型的书,或者我应该选择什么样的课程?
编辑我的问题更多的是关于如何注意我的同事数据中的模式并将这些模式识别为实际裂缝.这是我所关注的更高级逻辑,而不是低级逻辑.
编辑实际上,至少需要20个样本图像来准确表示我正在使用的数据.它变化很大.但我在这里,这里和这里都有一个样本.这些图像已经由我的同事处理.红色,蓝色和绿色数据是我必须分类的(红色代表暗裂纹,蓝色代表轻微裂纹,绿色代表宽/密封裂纹).
pattern-recognition artificial-intelligence image-processing data-analysis
我在Excel电子表格中有一个大型数据表,基本上可以被认为是被识别为属于各种子群体的个人的价值集合:
  IndivID   SubPopID  Value
     1          A       33.56
     2          E       42.31
     3          D       16.35
     4          A       50.59
     5          F       80.63
     ...
该表中有超过10,000个人,超过50个子群体.
我想计算每个子群体的5个数字摘要(Min,Q1,Median,Q3,Max).
枢轴表中的最小值和最大值很容易.但Q1,Q2(中位数)和Q3似乎不可能.
题
有没有办法计算Excel中数据透视表中每个子群的四分位数?
答案应如下所示:
SubPopID      Min     Q1     Q2        Q3      Max
   A         3.23    12.06   20.35   28.29     50.59
   B 
   C
   ...
我有来自三个不同GPS接收器的冰速GPS数据.数据位于熊猫数据框中,其索引为朱利安日(从2009年开始增量).
这是数据的子集(主数据集是3487235行...):
                    R2          R7         R8
1235.000000 116.321959  100.805197  96.519977
1235.000116 NaN         100.771133  96.234957
1235.000231 NaN         100.584559  97.249262
1235.000347 118.823610  100.169055  96.777833
1235.000463 NaN         99.753551   96.598350
1235.000579 NaN         99.338048   95.283989
1235.000694 113.995003  98.922544   95.154067
数据框具有以下形式:
Index: 6071320 entries, 127.67291667 to 1338.51805556 Data columns: R2 3487235 non-null values R7 3875864 non-null values R8 1092430 non-null values dtypes: float64(3)
R2以不同的速率对R7和R8进行采样,因此NaNs系统地出现在该间距处.
尝试df.plot()绘制整个数据帧(或其索引行位置)在绘制R7和R8方面工作正常,但不绘制R2.同样,只是做df.R2.plot()也不起作用.绘制R2的唯一方法是做df.R2.dropna().plot(),但这也会删除表示无数据周期的NaN(而不是仅比其他接收器更粗略的采样频率).
还有其他人遇到过这个吗?感谢任何关于这个问题的想法:)
我有以下数据框(真正的数据框比这个更大):
sale_user_id    sale_product_id count
1                 1              1
1                 8              1
1                 52             1
1                 312            5
1                 315            1
然后重新塑造它以使用以下代码将sale_product_id中的值作为列标题移动:
reshaped_df=id_product_count.pivot(index='sale_user_id',columns='sale_product_id',values='count')
结果数据框是:
sale_product_id -1057   1   2   3   4   5   6   8   9   10  ... 98  980 981 982 983 984 985 986 987 99
sale_user_id                                                                                    
1                NaN    1.0 NaN NaN NaN NaN NaN 1.0 NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3                NaN    1.0 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN …是否有一个C++库提供类似于R或Pandas的DataFrame的数据结构?我最感兴趣的是:
有一种方法可以根据另外两列的条件来移动数据帧列吗?就像是:
df["cumulated_closed_value"] = df.groupby("user").['close_cumsum'].shiftWhile(df['close_time']>df['open_time])
我已经找到了一种方法来做到这一点,但效率很低:
1)加载数据并创建要移位的列
df=pd.read_csv('data.csv')
df.sort_values(['user','close_time'],inplace=True)
df['close_cumsum']=df.groupby('user')['value'].cumsum()
df.sort_values(['user','open_time'],inplace=True)
print(df)
输出:
   user  open_time close_time  value  close_cumsum
0     1 2017-01-01 2017-03-01      5            18
1     1 2017-01-02 2017-02-01      6             6
2     1 2017-02-03 2017-02-05      7            13
3     1 2017-02-07 2017-04-01      3            21
4     1 2017-09-07 2017-09-11      1            22
5     2 2018-01-01 2018-02-01     15            15
6     2 2018-03-01 2018-04-01      3            18
2)使用自连接和一些过滤器移动列
自联接(这是内存效率低下)   df2=pd.merge(df[['user','open_time']],df[['user','close_time','close_cumsum']], on='user')
过滤'close_time'<'open_time'.然后获取max close_time的行
df2=df2[df2['close_time']<df2['open_time']]
idx = df2.groupby(['user','open_time'])['close_time'].transform(max) == df2['close_time']
df2=df2[idx]
3)与原始数据集合并:
df3=pd.merge(df[['user','open_time','close_time','value']],df2[['user','open_time','close_cumsum']],how='left')
print(df3)
输出:
   user  open_time close_time  value …有没有一种简单的方法来获得如下所示的轮廓线的(x,y)值:
import matplotlib.pyplot as plt
x = [1,2,3,4]
y = [1,2,3,4]
m = [[15,14,13,12],[14,12,10,8],[13,10,7,4],[12,8,4,0]]
cs = plt.contour(x,y,m, [9.5])
plt.show()
鉴于我有以下两个向量:
In [99]: time_index
Out[99]: 
[1484942413,
 1484942712,
 1484943012,
 1484943312,
 1484943612,
 1484943912,
 1484944212,
 1484944511,
 1484944811,
 1484945110]
In [100]: bytes_in
Out[100]: 
[1293981210388,
 1293981379944,
 1293981549960,
 1293981720866,
 1293981890968,
 1293982062261,
 1293982227492,
 1293982391244,
 1293982556526,
 1293982722320]
其中bytes_in是仅增量计数器,time_index是unix时间戳(epoch)的列表.
目标:我想要计算的是比特率.
这意味着我将构建一个数据框
In [101]: timeline = pandas.to_datetime(time_index, unit="s")
In [102]: recv = pandas.Series(bytes_in, timeline).resample("300S").mean().ffill().apply(lambda i: i*8)
In [103]: recv
Out[103]: 
2017-01-20 20:00:00    10351849683104
2017-01-20 20:05:00    10351851039552
2017-01-20 20:10:00    10351852399680
2017-01-20 20:15:00    10351853766928
2017-01-20 20:20:00    10351855127744
2017-01-20 20:25:00    10351856498088
2017-01-20 20:30:00    10351857819936
2017-01-20 20:35:00    10351859129952
2017-01-20 …data-analysis ×10
python ×6
pandas ×5
pivot-table ×2
c++ ×1
dataframe ×1
datetime ×1
excel ×1
excel-2007 ×1
indexing ×1
ipython ×1
matplotlib ×1
statistics ×1
text-mining ×1
word2vec ×1