小编Lin*_* Ma的帖子

LinkedHashMap订单问题

在LinkedHashMap Javadocs中提到:

特别是,对集合视图的操作不会影响后备映射的迭代顺序.

"收集视图上的操作"是什么意思?

java linkedhashmap

7
推荐指数
2
解决办法
1171
查看次数

关于在Python中关闭文件

我知道如果在Python中不再使用它,使用close关闭文件是一个好习惯.我试图打开大量打开的文件,而不是关闭它们(在相同的Python进程中),但没有看到任何异常或错误.我试过Mac和Linux.所以,只是想知道Python是否足够智能来管理文件句柄以自动关闭/重用它们,这样我们就不需要关心文件关闭了?

林先生,提前谢谢

python file

7
推荐指数
2
解决办法
1603
查看次数

使用10 MB内存为40亿个整数(关于找到优化的块大小)

问题是,给定一个包含40亿个整数的输入文件,提供一个算法来生成一个未包含在文件中的整数,假设只有10 MB的内存.

搜索了一些解决方案,其中之一是将整数存储到位向量块(每个块表示40亿范围内的特定整数范围,块中的每个位表示整数),并为每个块使用另一个计数器,计算每个块中的整数数.因此,如果整数的数量小于整数的块容量,则扫描块的位向量以找到缺少的整数.

我对此解决方案的困惑是,当块计数器阵列占用与位向量相同的存储器时,提到最佳最小占用空间.我很困惑为什么在这种情况下它是最佳的最小足迹?

这是我提到的计算细节,

Let N = 2^32.
counters (bytes): blocks * 4
bit vector (bytes): (N / blocks) / 8
blocks * 4 = (N / blocks) / 8
blocks^2 = N / 32
blocks = sqrt(N/2)/4
Run Code Online (Sandbox Code Playgroud)

林先生,提前谢谢

algorithm bit-manipulation bit

7
推荐指数
1
解决办法
772
查看次数

GradientBoostingClassifier的apply函数混淆了

有关应用功能,请参阅此处

我的混淆更多来自这个示例,我在下面的代码片段中添加了一些打印输出更多的调试信息,

grd = GradientBoostingClassifier(n_estimators=n_estimator)
grd_enc = OneHotEncoder()
grd_lm = LogisticRegression()
grd.fit(X_train, y_train)
test_var = grd.apply(X_train)[:, :, 0]
print "test_var.shape", test_var.shape
print "test_var", test_var
grd_enc.fit(grd.apply(X_train)[:, :, 0])
grd_lm.fit(grd_enc.transform(grd.apply(X_train_lr)[:, :, 0]), y_train_lr)
Run Code Online (Sandbox Code Playgroud)

输出是像下面,和困惑是什么样的数字6.,3.并且10.是什么意思?以及它们与最终分类结果的关系如何?

test_var.shape (20000, 10)
test_var [[  6.   6.   6. ...,  10.  10.  10.]
 [ 10.  10.  10. ...,   3.   3.   3.]
 [  6.   6.   6. ...,  11.  10.  10.]
 ..., 
 [  6.   6.   6. ...,  10.  10.  10.]
 [  6. …
Run Code Online (Sandbox Code Playgroud)

python scikit-learn

7
推荐指数
1
解决办法
249
查看次数

LinkedHashMap.putAll()以什么顺序插入元素?

我正在阅读Javadoc for LinkedHashMap,其中提到了它:

putAll方法为指定映射中的每个映射生成一个条目访问,其顺序为指定映射的条目集迭代器提供键-值映射。

我的问题是,“每个映射一个入口访问”是什么意思。如果有人可以帮助提供一个例子来阐明这一点,将不胜感激。

java linkedhashmap

6
推荐指数
1
解决办法
4829
查看次数

旋转有序数组搜索

研究下面的算法难题.发布问题陈述和解决方案.问题是,我们是否需要"搜索两半"部分以保证其安全?或者,当a[left] == a[mid]我们只搜索正确的部分而不检查是否a[mid] == a[right]- 从那时起a[left] == a[mid],我认为左边的所有元素都是相等的,并且不能满足搜索条件来查找值.

更详细的,我的意思是,如果是的话,最后写的是否安全

else if (a[left] == a[mid]) {
            return search(a, mid + 1, right, x);
    }
Run Code Online (Sandbox Code Playgroud)

问题陈述

给定已旋转未知次数的n个整数的排序数组,编写代码以查找数组中的元素,您可以假设该数组最初按递增顺序排序

例如,输入在{15,16,19,20,25,1,3,4,5,7,10,14}中找到5输出,8(数组中索引为5)

码

public static int search(int a[], int left, int right, int x) {
    int mid = (left + right) / 2;
    if (x == a[mid]) { // Found element
        return mid;
    }
    if (right < left) {
        return -1;
    }

    /* While there may be an inflection point …
Run Code Online (Sandbox Code Playgroud)

java sorting algorithm

6
推荐指数
1
解决办法
392
查看次数

Python defaultdict,字符串作为值的类型

需要创建一个defaultdict,值类型是普通的Python字符串,看来我的下面方法不起作用?发布编译错误消息.使用Python 2.7并想知道如何修复任何好主意?谢谢.

码

import collections

a = collections.defaultdict("")

a[1]="Hello"
a[2]="World"

print a
Run Code Online (Sandbox Code Playgroud)

错误信息

  a = collections.defaultdict("")
TypeError: first argument must be callable
Run Code Online (Sandbox Code Playgroud)

python

6
推荐指数
1
解决办法
6985
查看次数

C++中的无序集合交集

这是我的代码,想知道任何想法让它更快?我的实现是蛮力,对于a中的任何元素,尝试查找它是否也在b中,如果是,则放入结果集c.任何更聪明的想法都表示赞赏.

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<int> a = {1,2,3,4,5};
    std::unordered_set<int> b = {3,4,5,6,7};
    std::unordered_set<int> c;
    for (auto i = a.begin(); i != a.end(); i++) {
        if (b.find(*i) != b.end()) c.insert(*i);
    }
    for (int v : c) {
        std::printf("%d \n", v);
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ stl unordered-set

6
推荐指数
2
解决办法
3727
查看次数

雪花胜于索引?

这是问题所在,我有一个销售信息表,其中包含销售信息,该表具有类似(主键ID,产品名称,产品ID,商店名称,商店ID,销售日期)的列。我想进行分析,例如对商店/产品/销售日期进行深入研究。

我正在考虑两个设计选项,

  1. 在产品名称,产品ID,商店名称,商店ID,销售日期等列上创建单独的索引;
  2. 使用数据仓库雪花模型,将当前销售信息表视为事实表,并创建产品,商店和销售日期维度表。

为了具有更好的分析性能,听说雪花模型更好。但是从数据库设计的角度来看,为什么它比相关列的索引更好?

预先感谢林

database performance data-warehouse snowflake-schema

5
推荐指数
1
解决办法
2330
查看次数

scikit中roc_curve中的阈值学习

我指的是下面的链接和示例,并在此页面上张贴了混淆的图。我的困惑是,只有4个阈值,但是roc曲线似乎有很多数据点(> 4个数据点),想知道roc_curve如何在底层工作以找到更多数据点?

http://scikit-learn.org/stable/modules/model_evaluation.html#roc-metrics

>>> import numpy as np
>>> from sklearn.metrics import roc_curve
>>> y = np.array([1, 1, 2, 2])
>>> scores = np.array([0.1, 0.4, 0.35, 0.8])
>>> fpr, tpr, thresholds = roc_curve(y, scores, pos_label=2)
>>> fpr
array([ 0. ,  0.5,  0.5,  1. ])
>>> tpr
array([ 0.5,  0.5,  1. ,  1. ])
>>> thresholds
array([ 0.8 ,  0.4 ,  0.35,  0.1 ])
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

python machine-learning python-2.7 roc scikit-learn

5
推荐指数
2
解决办法
7701
查看次数