我的原始数据高度不平衡,如下所示:
df
Index Branch
1 10000
2 200
...
1000 1
...
10000 1
Run Code Online (Sandbox Code Playgroud)
如果我运行:
import seaborn as sns
sns.distplot(df['Branch'], bins=1000)
Run Code Online (Sandbox Code Playgroud)
结果如下:
是否有机会将可视化中 y 值的最大值固定为 0.06?并将 x 值调整为 1000 或其他值。
假设我有两个 pandas 数据框
data1 = [[s1, 0], [s2, 0], [s3, 1], [s4, 1], [s5, 0], [s6, 1], [s7, 0], [s8, 1]]
df1 = pd.DataFrame(data1, columns = ['s_no', 'values'])
data2 = [[s1, 0], [s2, 1], [s3, 1], [s4, 0], [s5, 0], [s6, 1], [s7, 1], [s8, 0]]
df2 = pd.DataFrame(data2, columns = ['s_no2', 'values2'])
Run Code Online (Sandbox Code Playgroud)
如何找到 value_counts
df2['values2'].value_counts() when df1['values'] == 1 and
df2['values2'].value_counts() when df1['values'] == 0
Run Code Online (Sandbox Code Playgroud) 我使用基于 RBF 内核的支持向量机回归训练了一个模型。我想知道对基于 RBF 内核的支持向量机非常重要或主要贡献的功能。我知道有一种方法可以了解基于向量大小的权重向量对线性支持向量回归最有贡献的特征。然而,对于基于 RBF 核的支持向量机,由于特征被转换到一个新的空间,我不知道如何提取最有贡献的特征。我在 python 中使用 scikit-learn。有没有办法在基于 RBF 核的支持向量回归或非线性支持向量回归中提取最有贡献的特征?
from sklearn import svm
svm = svm.SVC(gamma=0.001, C=100., kernel = 'linear')
Run Code Online (Sandbox Code Playgroud)
在这种情况下: 在 sklearn 中为 SVM 分类器确定最有贡献的特征效果很好。但是,如果将内核更改为
from sklearn import svm
svm = svm.SVC(gamma=0.001, C=100., kernel = 'rbf')
Run Code Online (Sandbox Code Playgroud)
上面的答案不起作用。
我尝试使用隔离森林进行异常值检测(欺诈检测)。如果我运行下面的代码(使用训练集和测试集):
from sklearn.ensemble import IsolationForest
iso = IsolationForest(random_state=0).fit(X_train)
isopred = iso.predict(X_test)
Run Code Online (Sandbox Code Playgroud)
我得到一个数组:array([1, 1, -1, ..., 1, 1, 1])
其中包含 1 或 -1。我如何使用可用于DecisionTreespredict_proba的内容。文档中是否有一个可用于 IsolationTree 的函数没有提到?
当我运行:iso.predict_proba(X_test)我收到此错误:
AttributeError:“IsolationForest”对象没有属性“predict_proba”
我正在搜索一个数组,它给出了预测属于哪个类(异常值或非异常值)的概率。
我的X_test样子:
A B C
11 1 0
11 3 0
11 0 1
Run Code Online (Sandbox Code Playgroud)
和y_test.values.ravel():
array([0,0,1])
超级类似于这篇文章:ValueError: 'balanced_accuracy' is not a valid score value in scikit-learn
我在用:
scoring = ['precision_macro', 'recall_macro', 'balanced_accuracy_score']
clf = DecisionTreeClassifier(random_state=0)
scores = cross_validate(clf, X, y, scoring=scoring, cv=10, return_train_score=True)
Run Code Online (Sandbox Code Playgroud)
我收到错误:
ValueError: 'balanced_accuracy_score' 不是有效的评分值。使用 sorted(sklearn.metrics.SCORERS.keys()) 获取有效选项。
当我检查可能的得分手时:
sklearn.metrics.SCORERS.keys()
dict_keys(['explained_variance', 'r2', 'max_error', 'neg_median_absolute_error', 'neg_mean_absolute_error', 'neg_mean_squared_error', 'neg_mean_squared_log_error', 'neg_root_mean_squared_error', 'neg_mean_poisson_deviance', 'neg_mean_gamma_deviance', 'accuracy', 'roc_auc', 'roc_auc_ovr', 'roc_auc_ovo', 'roc_auc_ovr_weighted', 'roc_auc_ovo_weighted', 'balanced_accuracy', 'average_precision', 'neg_log_loss', 'neg_brier_score', 'adjusted_rand_score', 'homogeneity_score', 'completeness_score', 'v_measure_score', 'mutual_info_score', 'adjusted_mutual_info_score', 'normalized_mutual_info_score', 'fowlkes_mallows_score', 'precision', 'precision_macro', 'precision_micro', 'precision_samples', 'precision_weighted', 'recall', 'recall_macro', 'recall_micro', 'recall_samples', 'recall_weighted', 'f1', 'f1_macro', 'f1_micro', 'f1_samples', 'f1_weighted', …Run Code Online (Sandbox Code Playgroud) 现在我有一个 for 循环与一个图的组合:
plt.figure(figsize=(12, 12))
plt.subplot(221)
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y_pred)
plt.title('Clustering n: {}'.format(clusternumber))
plt.show()
Run Code Online (Sandbox Code Playgroud)
如果我运行循环:
for i in [2,3,4,5,10,15,20]:
clustering(X, i)
Run Code Online (Sandbox Code Playgroud)
如何避免图表旁边的滚动条?我更喜欢看到没有滚动条的可视化效果,这样我就可以同时看到至少 2 或 3 个。
我将多个csv文件保存在一个具有相同列布局的文件夹中,并希望将其作为pandas中的数据框加载到python中。
这个问题确实类似于该线程。
我正在使用以下代码:
import glob
import pandas as pd
salesdata = pd.DataFrame()
for f in glob.glob("TransactionData\Promorelevant\*.csv"):
appenddata = pd.read_csv(f, header=None, sep=";")
salesdata = salesdata.append(appenddata,ignore_index=True)
Run Code Online (Sandbox Code Playgroud)
是否有其他软件包更好的解决方案?
这需要很多时间。
谢谢
我正在尝试使用 networkx 从 pandas 数据帧创建一个有向图,到目前为止我可以使用:
nx.from_pandas_edgelist(df, 'Activity', 'Activity followed', create_using=nx.DiGraph())
Run Code Online (Sandbox Code Playgroud)
它向我显示了“活动”-->“活动”中的所有节点和边。
在我的数据框中,有时会有相同的活动,然后是相同的活动,我想以边缘权重的形式计算这个数字,到目前为止,这是我的数据框的例子:
Index Activity Activityfollowed
0 Lunch Dinner
1 Lunch Dinner
2 Breakfast Lunch
Run Code Online (Sandbox Code Playgroud)
应该有边缘:
午餐 --> 晚餐(重量2)
早餐 --> 午餐(重量1)
有什么办法可以做到吗?
我在数据框中有以下列:
columnA
EUR590
USD680
EUR10000,9
USD40
Run Code Online (Sandbox Code Playgroud)
我如何根据前三个字符分割它,数据框看起来像:
columnA columnB
590 EUR
680 USD
10000,9 EUR
40 USD
Run Code Online (Sandbox Code Playgroud) 这个问题与这个问题相关。
但这次我想过滤一个数据框,保留一列中具有两个以上相同条目的所有行。
对于确切的两列,我使用:df1 = df[df['group'].map(df['group'].value_counts()).eq(2)]
组是条目所在的列。所以我正在寻找:
df1 = df[df['group'].map(df['group'].value_counts()).uneq(2)]
但这个功能不存在。