我有以下DataFrame:
customer item1 item2 item3 1 apple milk tomato 2 water orange potato 3 juice mango chips
我想把它翻译成每行的词典列表
rows = [{'customer': 1, 'item1': 'apple', 'item2': 'milk', 'item3': 'tomato'},
{'customer': 2, 'item1': 'water', 'item2': 'orange', 'item3': 'potato'},
{'customer': 3, 'item1': 'juice', 'item2': 'mango', 'item3': 'chips'}]
Run Code Online (Sandbox Code Playgroud) 是否可以为python内置类型添加扩展方法?我知道我可以通过简单地添加新方法来将扩展方法添加到已定义的类型.如下:
class myClass:
pass
myClass.myExtensionMethod = lambda self,x:x * 2
z = myClass()
print z.myExtensionMethod(10)
Run Code Online (Sandbox Code Playgroud)
但是有没有办法将扩展方法添加到python built'in类型,如list,dict,...
list.myExtension = lambda self,x:x * 2
list.myExtension(10)
Run Code Online (Sandbox Code Playgroud) 有时检查某些事情是否无法构建是很好的,例如:
// Next line should fail to compile: can't convert const iterator to iterator.
my_new_container_type::iterator it = my_new_container_type::const_iterator();
Run Code Online (Sandbox Code Playgroud)
是否可以将这些类型的东西合并到CMake/CTest中?我正在寻找这样的东西CMakeLists.txt
:
add_build_failure_executable(
test_iterator_conversion_build_failure
iterator_conversion_build_failure.cpp)
add_build_failure_test(
test_iterator_conversion_build_failure
test_iterator_conversion_build_failure)
Run Code Online (Sandbox Code Playgroud)
(当然,据我所知,这些特定的CMake指令不存在.)
我想知道如何json
从单个文件夹中读取多个文件(不指定文件名,只是它们是json文件).
此外,可以将它们变成pandas
DataFrame吗?
你能给我一个基本的例子吗?
为什么std::lock_guard
和std::unique_lock
必要规定锁定类型作为模板参数?
考虑以下替代方案.首先,在detail
命名空间中,有类型擦除类(非模板抽象基类和模板派生类):
#include <type_traits>
#include <mutex>
#include <chrono>
#include <iostream>
namespace detail {
struct locker_unlocker_base {
virtual void lock() = 0;
virtual void unlock() = 0;
};
template<class Mutex>
struct locker_unlocker : public locker_unlocker_base {
locker_unlocker(Mutex &m) : m_m{&m} {}
virtual void lock() { m_m->lock(); }
virtual void unlock() { m_m->unlock(); }
Mutex *m_m;
};
}
Run Code Online (Sandbox Code Playgroud)
现在te_lock_guard
,类型擦除锁定保护,简单地放置 - 在构造时消息正确类型的对象(没有动态内存分配):
class te_lock_guard {
public:
template<class Mutex>
te_lock_guard(Mutex &m) {
new (&m_buf) detail::locker_unlocker<Mutex>(m);
reinterpret_cast<detail::locker_unlocker_base …
Run Code Online (Sandbox Code Playgroud) 我想学习Naive Bayes模型,解决类是布尔值的问题(取两个值中的一个).某些功能是布尔值,但其他功能是分类的,可以采用少量值(~5).
如果我的所有功能都是布尔值,那么我想使用sklearn.naive_bayes.BernoulliNB
.似乎很清楚,sklearn.naive_bayes.MultinomialNB
是不是我想要的.
一种解决方案是将我的分类特征拆分为布尔特征.例如,如果变量"X"取值"红色","绿色","蓝色",我可以有三个变量:"X是红色","X是绿色","X是蓝色".这违反了给予类的变量的条件独立性假设,因此它似乎完全不合适.
另一种可能性是将变量编码为实值变量,其中0.0表示红色,1.0表示绿色,2.0表示蓝色.这似乎完全不适合使用GaussianNB(出于显而易见的原因).
我想要做的事情似乎并不奇怪,但我不明白如何将它融入sklearn给我的Naive Bayes模型中.我自己编写代码很容易,但是如果可能的话,我更喜欢使用sklearn,原因很明显(大多数:避免错误).
[编辑解释为什么我不认为多项式NB是我想要的]:
我的理解是,在多项式NB中,特征向量包括在k
iid样本中观察到令牌的次数.
我的理解是,这适用于分类文档,其中存在基础类文档,然后假定文档中的每个单词都是从特定于该类的分类分布中提取的.文档将具有k
令牌,特征向量的长度将等于词汇量大小,并且特征计数的总和将是k
.
就我而言,我有一些bernoulli变量,加上几个分类变量.但这里没有"计数"的概念.
示例:课程是喜欢或不喜欢数学的人.预测因子是大学专业(分类)以及他们是否进入研究生院(布尔).
我认为这不符合多项式,因为这里没有任何重要性.
我有两个独立的pandas数据帧(df1
和df2
),它们有多个列,但只有一个是共同的('text').
我想找到在列的任何行中df2
没有匹配df2
且df1
具有共同点的每一行.
DF1
A B text
45 2 score
33 5 miss
20 1 score
Run Code Online (Sandbox Code Playgroud)
DF2
C D text
.5 2 shot
.3 2 shot
.3 1 miss
Run Code Online (Sandbox Code Playgroud)
结果df(删除包含未命中的行,因为它出现在df1中)
C D text
.5 2 shot
.3 2 shot
Run Code Online (Sandbox Code Playgroud)
是否可以isin
在此方案中使用该方法?
我想使用SSH在几台(15+)远程机器上执行Python脚本.在调用脚本/命令之后,我需要断开ssh会话并保持进程在后台运行,只要它们是必需的.
我过去使用过Paramiko和PySSH所以再次使用它们没有问题.我唯一需要知道的是如何在python中断开ssh会话(因为通常本地脚本会等待每个远程机器在继续之前完成处理).
据我所知,在C++ 11中有效实现构造函数的两种常用方法是使用其中两种
Foo(const Bar& bar) : bar_{bar} {};
Foo(Bar&& bar) : bar_{std::move(bar)} {};
Run Code Online (Sandbox Code Playgroud)
或者只是一个时尚的
Foo(Bar bar) : bar_{std::move(bar)} {};
Run Code Online (Sandbox Code Playgroud)
使用第一个选项产生最佳性能(例如,在左值的情况下希望是单个副本,在rvalue的情况下希望单个移动),但是对于N个变量需要2个N重载,而第二个选项只需要一个函数通过左值时的额外动作.
在大多数情况下,这不应该产生太大的影响,但肯定两种选择都不是最佳选择.但是,也可以执行以下操作:
template<typename T>
Foo(T&& bar) : bar_{std::forward<T>(bar)} {};
Run Code Online (Sandbox Code Playgroud)
这样做的缺点是允许可能不需要的类型的变量作为bar
参数(这是我确信使用模板专门化很容易解决的问题),但无论如何,性能是最佳的,代码随着变量的数量线性增长.
为什么没有人为此目的使用像forward这样的东西?这不是最优化的方式吗?
[[1, '34', '44'], [1, '40', '30', '41'], [1, '41', '40', '42'], [1, '42', '41', '43'], [1, '43', '42', '44'], [1, '44', '34', '43']]
Run Code Online (Sandbox Code Playgroud)
我有一份清单清单.我的目的是检查是否有任何一个子列表与其他子列表有任何共同点(不包括要比较的第一个索引对象).如果它有任何共同点,那么统一这些子列表.
例如,对于这个例子,我的最终答案应该是这样的:
[[1, '34, '44', '40' '30', '41', '42', '43']]
Run Code Online (Sandbox Code Playgroud)
我可以理解我应该将子列表转换为集合,然后使用union()和intersection()操作.但我坚持的是如何比较每个集/子列表.我不能在列表上运行循环并逐个比较每个子列表,因为列表的内容将被修改,这将导致错误.
我想知道的是有没有有效的方法来比较所有子列表(转换为集合)并获得它们的并集?
python ×6
c++ ×3
pandas ×3
list ×2
c++11 ×1
cmake ×1
ctest ×1
dataframe ×1
dictionary ×1
json ×1
naivebayes ×1
python-3.x ×1
scikit-learn ×1
set-union ×1
ssh ×1
statistics ×1
type-erasure ×1