我正在尝试使用scikit-learn LabelEncoder来编码DataFrame字符串标签的大熊猫.由于数据框有很多(50+)列,我想避免LabelEncoder为每列创建一个对象; 我宁愿只有一个大LabelEncoder对象适用于我的所有数据列.
投掷整DataFrame到LabelEncoder创建下面的错误.请记住,我在这里使用虚拟数据; 实际上我正在处理大约50列字符串标记数据,因此需要一个不按名称引用任何列的解决方案.
import pandas
from sklearn import preprocessing
df = pandas.DataFrame({
'pets': ['cat', 'dog', 'cat', 'monkey', 'dog', 'dog'],
'owner': ['Champ', 'Ron', 'Brick', 'Champ', 'Veronica', 'Ron'],
'location': ['San_Diego', 'New_York', 'New_York', 'San_Diego', 'San_Diego',
'New_York']
})
le = preprocessing.LabelEncoder()
le.fit(df)
Run Code Online (Sandbox Code Playgroud)
回溯(最近一次调用最后一次):文件"",第1行,在文件"/Users/bbalin/anaconda/lib/python2.7/site-packages/sklearn/preprocessing/label.py",第103行,in y y = column_or_1d(Y,警告=真)文件 "/Users/bbalin/anaconda/lib/python2.7/site-packages/sklearn/utils/validation.py",线306,在column_or_1d提高ValueError异常("坏输入形状{ 0.".format(shape))ValueError:输入形状错误(6,3)
有关如何解决这个问题的任何想法?
我正在尝试进行一个简单的测试,True如果列表的任何结果都会返回None.但是,我希望0并且''不会导致返回True.
list_1 = [0, 1, None, 4]
list_2 = [0, 1, 3, 4]
any(list_1) is None
>>>False
any(list_2) is None
>>>False
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,any()在这种情况下,函数不是很有用.
我在PySpark中运行一些操作,最近增加了配置中的节点数(在Amazon EMR上).然而,即使我将节点数量增加了两倍(从4到12),性能似乎也没有改变.因此,我想看看Spark是否可以看到新节点.
我正在调用以下函数:
sc.defaultParallelism
>>>> 2
Run Code Online (Sandbox Code Playgroud)
但我认为这告诉我分配给每个节点的任务总数,而不是Spark可以看到的代码总数.
如何查看PySpark在群集中使用的节点数量?
我正在尝试使用scikit-learn和随机林分类器预先形成递归特征消除,使用OOB ROC作为对递归过程中创建的每个子集进行评分的方法.
但是,当我尝试使用该RFECV方法时,我收到一个错误说法AttributeError: 'RandomForestClassifier' object has no attribute 'coef_'
随机森林本身没有系数,但它们确实按基尼评分排名.所以,我想知道如何解决这个问题.
请注意,我想使用一种方法,明确地告诉我pandas在最佳分组中选择了我的DataFrame中的哪些功能,因为我使用递归功能选择来尝试最小化我将输入到最终分类器的数据量.
这是一些示例代码:
from sklearn import datasets
import pandas as pd
from pandas import Series
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_selection import RFECV
iris = datasets.load_iris()
x=pd.DataFrame(iris.data, columns=['var1','var2','var3', 'var4'])
y=pd.Series(iris.target, name='target')
rf = RandomForestClassifier(n_estimators=500, min_samples_leaf=5, n_jobs=-1)
rfecv = RFECV(estimator=rf, step=1, cv=10, scoring='ROC', verbose=2)
selector=rfecv.fit(x, y)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/bbalin/anaconda/lib/python2.7/site-packages/sklearn/feature_selection/rfe.py", line 336, in fit
ranking_ = …Run Code Online (Sandbox Code Playgroud) 我正在尝试提取我使用PySpark训练的随机森林对象的要素重要性.但是,我没有看到在文档中的任何地方执行此操作的示例,也不是RandomForestModel的方法.
如何从RandomForestModelPySpark中的回归器或分类器中提取要素重要性?
以下是文档中提供的示例代码,以帮助我们开始; 但是,没有提到其中的特征重要性.
from pyspark.mllib.tree import RandomForest
from pyspark.mllib.util import MLUtils
# Load and parse the data file into an RDD of LabeledPoint.
data = MLUtils.loadLibSVMFile(sc, 'data/mllib/sample_libsvm_data.txt')
# Split the data into training and test sets (30% held out for testing)
(trainingData, testData) = data.randomSplit([0.7, 0.3])
# Train a RandomForest model.
# Empty categoricalFeaturesInfo indicates all features are continuous.
# Note: Use larger numTrees in practice.
# Setting featureSubsetStrategy="auto" lets the algorithm choose.
model = RandomForest.trainClassifier(trainingData, numClasses=2, …Run Code Online (Sandbox Code Playgroud) 我一直在使用adaR包,最近,caret.根据该文件,caret的train()功能应该有一个使用ADA的选项.但是,当我使用与我的ada()通话相同的语法时,插入符号正在嘲笑我.
这是一个使用wine示例数据集的演示.
library(doSNOW)
registerDoSNOW(makeCluster(2, type = "SOCK"))
library(caret)
library(ada)
wine = read.csv("http://www.nd.edu/~mclark19/learn/data/goodwine.csv")
set.seed(1234) #so that the indices will be the same when re-run
trainIndices = createDataPartition(wine$good, p = 0.8, list = F)
wanted = !colnames(wine) %in% c("free.sulfur.dioxide", "density", "quality",
"color", "white")
wine_train = wine[trainIndices, wanted]
wine_test = wine[-trainIndices, wanted]
cv_opts = trainControl(method="cv", number=10)
###now, the example that works using ada()
results_ada <- ada(good ~ ., data=wine_train, control=rpart.control
(maxdepth=30, …Run Code Online (Sandbox Code Playgroud) 我在a上运行了一个相关矩阵pandas DataFrame:
df=pd.DataFrame( {'one':[0.1, .32, .2, 0.4, 0.8], 'two':[.23, .18, .56, .61, .12], 'three':[.9, .3, .6, .5, .3], 'four':[.34, .75, .91, .19, .21], 'zive': [0.1, .32, .2, 0.4, 0.8], 'six':[.9, .3, .6, .5, .3], 'drive':[.9, .3, .6, .5, .3]})
corrMatrix=df.corr()
corrMatrix
drive four one six three two zive
drive 1.00 -0.04 -0.75 1.00 1.00 0.24 -0.75
four -0.04 1.00 -0.49 -0.04 -0.04 0.16 -0.49
one -0.75 -0.49 1.00 -0.75 -0.75 -0.35 1.00
six 1.00 -0.04 -0.75 1.00 1.00 …Run Code Online (Sandbox Code Playgroud) 我正在尝试提取我使用PySpark训练的随机森林对象的类概率.但是,我没有在文档中的任何地方看到它的示例,也不是它的方法RandomForestModel.
如何从RandomForestModelPySpark中的分类器中提取类概率?
以下是文档中提供的示例代码,它仅提供最终类(而不是概率):
from pyspark.mllib.tree import RandomForest
from pyspark.mllib.util import MLUtils
# Load and parse the data file into an RDD of LabeledPoint.
data = MLUtils.loadLibSVMFile(sc, 'data/mllib/sample_libsvm_data.txt')
# Split the data into training and test sets (30% held out for testing)
(trainingData, testData) = data.randomSplit([0.7, 0.3])
# Train a RandomForest model.
# Empty categoricalFeaturesInfo indicates all features are continuous.
# Note: Use larger numTrees in practice.
# Setting featureSubsetStrategy="auto" lets the algorithm choose.
model = RandomForest.trainClassifier(trainingData, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用SciPy的dendrogram方法根据阈值将数据切割成多个簇.但是,一旦我创建了树形图并检索它color_list,列表中的条目就少于标签.
或者,我尝试使用fcluster我确定的相同阈值dendrogram; 但是,这不会产生相同的结果 - 它给了我一个集群而不是三个集群.
这是我的代码.
import pandas
data = pandas.DataFrame({'total_runs': {0: 2.489857755536053,
1: 1.2877651950650333, 2: 0.8898850111727028, 3: 0.77750321282732704, 4: 0.72593099987615461, 5: 0.70064977003207007,
6: 0.68217502514600825, 7: 0.67963194285399975, 8: 0.64238326692987524, 9: 0.6102581538587678, 10: 0.52588765899448564,
11: 0.44813665774322564, 12: 0.30434031343774476, 13: 0.26151929543260161, 14: 0.18623657993534984, 15: 0.17494230269731209,
16: 0.14023670906519603, 17: 0.096817318756050832, 18: 0.085822227670014059, 19: 0.042178447746868117, 20: -0.073494398270518693,
21: -0.13699665903273103, 22: -0.13733324345373216, 23: -0.31112299949731331, 24: -0.42369178918768974, 25: -0.54826542322710636,
26: -0.56090603814914863, 27: -0.63252372328438811, 28: -0.68787316140457322, 29: -1.1981351436422796, 30: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用抽象聚类(特别是hclust)将数据集聚类成10个组,大小不超过100个成员,并且没有任何组占总人口的40%以上.我目前知道的唯一方法是重复使用cut()并选择持续较低的h水平,直到我对切割的分散感到满意为止.然而,这迫使我返回并重新聚集我修剪的组,将它们聚合成100个成员组,这可能非常耗时.
我已经尝试过这个dynamicTreeCut包,但无法弄清楚如何输入这些(相对简单的)限制.我正在使用deepSplit指定分组数量的方式,但是根据文档,这会将最大数量限制为4.对于下面的练习,我要做的就是将群集分成5组3或更多的人(我可以自己处理最大的尺寸限制,但如果你想尝试解决这个问题,那将会有所帮助!).
这是我的例子,使用Orange数据集.
library(dynamicTreeCut)
library(reshape2)
##creating 14 individuals from Orange's original 5
Orange1<-Orange
Orange1$Tree<-as.numeric(as.character(Orange1$Tree))
Orange2<-Orange1
Orange3<-Orange1
Orange2$Tree=Orange2$Tree+6
Orange3$Tree=Orange3$Tree+11
combOr<-rbind(Orange1, Orange2[1:28,], Orange3)
####casting the data to make a correlation matrix, and then running
#### a hierarchical cluster
castOrange<-dcast(combOr, age~Tree, mean, fill=0)
castOrange[,16]<-c(1,34,5,35,34,35,21)
castOrange[,17]<-c(1,34,5,35,34,35,21)
orangeCorr<-cor(castOrange[, -1])
orangeClust<-hclust(dist(orangeCorr))
###running the dynamic tree cut
dynamicCut<-cutreeDynamic(orangeClust, minClusterSize=3, method="tree", deepSplit=4)
dynamicCut
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 …Run Code Online (Sandbox Code Playgroud) python ×5
apache-spark ×3
pandas ×3
pyspark ×3
r ×2
scikit-learn ×2
adaboost ×1
data-mining ×1
dendrogram ×1
distance ×1
numpy ×1
python-2.7 ×1
scipy ×1