我觉得这是一个基本问题,所以请随时引导我访问任何资源:
对于本地中存在的任何包,我的 conda 环境在 yaml 文件中指定的包版本之前使用 .local。如果可能的话,如何让它忽略 .local?
我正在使用 PyCharm 和 Ubuntu。
如果我可以提供更多信息,请告诉我。
我想知道在预处理管道中使用分类器时,如何从 scikit-learn 中的随机森林中提取特征重要性以及特征名称。
这里的问题仅涉及提取特征重要性:如何从 Sklearn pipeline 中提取特征重要性
从我所做的简短研究来看,这在 scikit-learn 中似乎不可能,但我希望我是错的。
我还发现了一个名为 ELI5 的包(https://eli5.readthedocs.io/en/latest/overview.html),它应该可以解决 scikit-learn 的问题,但它并没有解决我的问题,因为名称为我输出的特征是 x1、x2 等,而不是实际的特征名称。
作为一种解决方法,我在管道之外完成了所有预处理,但很想知道如何在管道中进行预处理。
如果我可以提供任何有用的代码,请在评论中告诉我。
我有以下代码可以对我拥有的 2 列进行单热编码。
# encode city labels using one-hot encoding scheme
city_ohe = OneHotEncoder(categories='auto')
city_feature_arr = city_ohe.fit_transform(df[['city']]).toarray()
city_feature_labels = city_ohe.categories_
city_features = pd.DataFrame(city_feature_arr, columns=city_feature_labels)
phone_ohe = OneHotEncoder(categories='auto')
phone_feature_arr = phone_ohe.fit_transform(df[['phone']]).toarray()
phone_feature_labels = phone_ohe.categories_
phone_features = pd.DataFrame(phone_feature_arr, columns=phone_feature_labels)
Run Code Online (Sandbox Code Playgroud)
我想知道的是如何在 4 行中执行此操作,同时在输出中正确命名列。也就是说,我可以通过包含两个列名来创建一个正确的单热编码数组,fit_transform但是当我尝试命名结果数据框的列时,它告诉我索引的形状之间存在不匹配:
ValueError: Shape of passed values is (6, 50000), indices imply (3, 50000)
Run Code Online (Sandbox Code Playgroud)
对于背景,电话和城市都有 3 个值。
city phone
0 CityA iPhone
1 CityB Android
2 CityB iPhone
3 CityA iPhone
4 CityC Android
Run Code Online (Sandbox Code Playgroud) 上页。《破解编码面试》第 44 章有以下算法:
int f(int n) {
if (n <= 1) {
return 1;
}
return f(n - 1) + f(n - 1);
}
Run Code Online (Sandbox Code Playgroud)
书上说它的时间复杂度为 O(2^n) ,空间复杂度为 O(n) 。我得到了时间复杂度部分,因为创建了 O(2^n) 个节点。我不明白为什么空间复杂度不是这样。书上说因为这是因为在任何给定时间只存在 O(n) 个节点。
怎么可能?当我们处于 f(1) 的底层时,调用堆栈不会包含所有 2^n 次调用吗?我缺少什么?
如果我可以提供更多详细信息,请告诉我。
谢谢,