我正在使用scikit中的TfidfVectorizer学习从文本数据中提取一些特征.我有一个带有分数的CSV文件(可以是+1或-1)和一个评论(文本).我将这些数据导入DataFrame,以便运行Vectorizer.
这是我的代码:
import pandas as pd
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
df = pd.read_csv("train_new.csv",
names = ['Score', 'Review'], sep=',')
# x = df['Review'] == np.nan
#
# print x.to_csv(path='FindNaN.csv', sep=',', na_rep = 'string', index=True)
#
# print df.isnull().values.any()
v = TfidfVectorizer(decode_error='replace', encoding='utf-8')
x = v.fit_transform(df['Review'])
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误的追溯:
Traceback (most recent call last):
File "/home/PycharmProjects/Review/src/feature_extraction.py", line 16, in <module>
x = v.fit_transform(df['Review'])
File "/home/b/hw1/local/lib/python2.7/site- packages/sklearn/feature_extraction/text.py", line 1305, in fit_transform
X = super(TfidfVectorizer, self).fit_transform(raw_documents)
File "/home/b/work/local/lib/python2.7/site-packages/sklearn/feature_extraction/text.py", line 817, in fit_transform …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的DataFrame(第一列是index(786 ...)和第二列day(25 ...)并且Rainfall amount是空的):
Day Rainfall amount (millimetres)
786 25
787 26
788 27
789 28
790 29
791 1
792 2
793 3
794 4
795 5
Run Code Online (Sandbox Code Playgroud)
我想删除790行.我用df.drop尝试了很多东西但是没有发生.
我希望你能帮助我.
我刚开始学习使用python.我正在使用anaconda python 3.5和Rodeo来做一个简单的事情ggplot.
from ggplot import *
df=pd.DataFrame({"Animal":["dog","dolphin","chicken","ant","spider"],"Legs":[4,0,2,6,8]})
p=ggplot(df, aes(x="Animal", weight="Legs")) + geom_bar(fill='blue')
p
ggsave("test.png",p)
Run Code Online (Sandbox Code Playgroud)
在第5行之前一切正常.我得到了我想要的情节.但是当我试图保存情节时,我收到了一个错误:
NameError:未定义名称'ggsave'
似乎ggplot模块中没有ggsave函数?ggplot版本是0.11.1.我在这里错过了什么吗?
我正在对录制的音频文件执行语音活动检测,以检测波形中的语音与非语音部分。
分类器的输出看起来像(突出显示的绿色区域表示语音):
我在这里面临的唯一问题是使其适用于音频输入流(例如:来自麦克风)并在规定的时间范围内进行实时分析。
我知道PyAudio可用于动态记录来自麦克风的语音,并且有几个波形、频谱、频谱图等的实时可视化示例,但找不到与以近乎实时的方式进行特征提取相关的任何内容.
我有一个数据框,在列上有一个3级深度多索引.我想计算行(sum(axis=1))中的小计,其中我在其中一个级别上求和,同时保留其他级别.我想我知道如何使用level关键字参数来做到这一点pd.DataFrame.sum.但是,我很难想到如何将这笔钱的结果合并到原始表中.
建立:
import numpy as np
import pandas as pd
from itertools import product
np.random.seed(0)
colors = ['red', 'green']
shapes = ['square', 'circle']
obsnum = range(5)
rows = list(product(colors, shapes, obsnum))
idx = pd.MultiIndex.from_tuples(rows)
idx.names = ['color', 'shape', 'obsnum']
df = pd.DataFrame({'attr1': np.random.randn(len(rows)),
'attr2': 100 * np.random.randn(len(rows))},
index=idx)
df.columns.names = ['attribute']
df = df.unstack(['color', 'shape'])
Run Code Online (Sandbox Code Playgroud)
给出一个漂亮的框架:

说我想降低shape水平.我可以跑:
tots = df.sum(axis=1, level=['attribute', 'color'])
Run Code Online (Sandbox Code Playgroud)
得到我的总数是这样的:

有了这个,我想把它放到原来的框架上.我想我可以用一种有点麻烦的方式做到这一点:
tots = df.sum(axis=1, level=['attribute', 'color'])
newcols = pd.MultiIndex.from_tuples(list((i[0], …Run Code Online (Sandbox Code Playgroud) 我一直在尝试聚集多个URL数据集(每个约100万个),以查找每个URL的原始和拼写错误.我决定使用levenshtein距离作为相似性度量,并将dbscan作为聚类算法,因为k-means算法不起作用,因为我不知道聚类的数量.
我使用Scikit-learn实现dbscan时遇到了一些问题.
下面的代码片段适用于我使用的格式的小数据集,但由于它预先计算整个距离矩阵,因此占用O(n ^ 2)空间和时间,对于我的大型数据集来说太过分了.我已经运行了好几个小时,但它最终只占用了我的电脑的所有内存.
lev_similarity = -1*np.array([[distance.levenshtein(w1[0],w2[0]) for w1 in words] for w2 in words])
dbscan = sklearn.cluster.DBSCAN(eps = 7, min_samples = 1)
dbscan.fit(lev_similarity)
Run Code Online (Sandbox Code Playgroud)
所以我想我需要一些方法来动态计算相似性,因此尝试了这种方法.
dbscan = sklearn.cluster.DBSCAN(eps = 7, min_samples = 1, metric = distance.levenshtein)
dbscan.fit(words)
Run Code Online (Sandbox Code Playgroud)
但这种方法最终给我一个错误:
ValueError: could not convert string to float: URL
Run Code Online (Sandbox Code Playgroud)
我意识到这意味着它试图将输入转换为相似函数浮动.但我不希望它这样做.据我所知,它只需要一个可以接受两个参数并返回一个浮点值的函数,然后它可以与mp进行比较,这是levenshtein距离应该做的.
我被困在这一点上,因为我不知道sklearn的dbscan的实现细节,以找出它为什么试图将它转换为float,而且我对如何避免O(n ^ 2)矩阵也没有更好的想法计算.
如果有更好或更快的方法来聚集这些我可能忽略的字符串,请告诉我.
python cluster-analysis machine-learning levenshtein-distance scikit-learn
如何创建一个联合模型,股票的参数知识图嵌入(KGE)模型,塔克(如下),和手套(与尺寸一起承担共生矩阵已经有售)pytorch?
换句话说,联合模型必须服从CMTF的标准(Ç oupled中号ATRIX和Ť恩索尔˚F actorizations)框架和从所述两个嵌入物必须在训练期间被捆扎的权重。这里的问题是 KGE 需要一个三元组(主题、关系、对象),而 GloVe 需要一个共现矩阵。此外,它们的损失函数的计算方式也不同。
class TuckER(torch.nn.Module):
def __init__(self, d, d1, d2, **kwargs):
super(TuckER, self).__init__()
self.E = torch.nn.Embedding(len(d.entities), d1)
self.R = torch.nn.Embedding(len(d.relations), d2)
self.W = torch.nn.Parameter(torch.tensor(np.random.uniform(-1, 1, (d2, d1, d1)),
dtype=torch.float, device="cuda", requires_grad=True))
self.input_dropout = torch.nn.Dropout(kwargs["input_dropout"])
self.hidden_dropout1 = torch.nn.Dropout(kwargs["hidden_dropout1"])
self.hidden_dropout2 = torch.nn.Dropout(kwargs["hidden_dropout2"])
self.loss = torch.nn.BCELoss()
self.bn0 = torch.nn.BatchNorm1d(d1)
self.bn1 = torch.nn.BatchNorm1d(d1)
def init(self):
xavier_normal_(self.E.weight.data)
xavier_normal_(self.R.weight.data)
def forward(self, e1_idx, r_idx):
e1 = self.E(e1_idx)
x = self.bn0(e1)
x = …Run Code Online (Sandbox Code Playgroud) 我有一堆14784文本文档,我试图进行矢量化,所以我可以运行一些分析.我CountVectorizer在sklearn中使用了将文档转换为特征向量.我这样做是通过调用:
vectorizer = CountVectorizer
features = vectorizer.fit_transform(examples)
Run Code Online (Sandbox Code Playgroud)
其中examples是所有文本文档的数组
现在,我正在尝试使用其他功能.为此,我将这些功能存储在pandas数据帧中.目前,我的pandas数据帧(没有插入文本功能)具有形状(14784, 5).我的特征向量的形状是(14784, 21343).
将矢量化特征插入到pandas数据帧中的好方法是什么?
我正在将LabelEncoder应用于pandas DataFrame, df
Feat1 Feat2 Feat3 Feat4 Feat5
A A A A E
B B C C E
C D C C E
D A C D E
Run Code Online (Sandbox Code Playgroud)
我正在将标签编码器应用于这样的数据帧 -
from sklearn import preprocessing
le = preprocessing.LabelEncoder()
intIndexed = df.apply(le.fit_transform)
Run Code Online (Sandbox Code Playgroud)
这是标签的映射方式
A = 0
B = 1
C = 2
D = 3
E = 0
Run Code Online (Sandbox Code Playgroud)
我猜测E没有给出值,4因为它没有出现在除了之外的任何其他列中Feat 5.
我希望E被赋予4- 但不知道如何在DataFrame中执行此操作.
我在不同的运行中获得了不同的值...在这里我做错了什么:
X=np.random.random((100,5))
y=np.random.randint(0,2,(100,))
clf=RandomForestClassifier()
cv = StratifiedKFold(y, random_state=1)
s = cross_val_score(clf, X,y,scoring='roc_auc', cv=cv)
print(s)
# [ 0.42321429 0.44360902 0.34398496]
s = cross_val_score(clf, X,y,scoring='roc_auc', cv=cv)
print(s)
# [ 0.42678571 0.46804511 0.36090226]
Run Code Online (Sandbox Code Playgroud)