python

Вероятность классов

Функция sklearn predict_proba().

Подходит для решающего дерева,случайного леса, логистической регрессии.

count_probabilities = model.predict_proba(df)

Перемешивание строк shuffle

from sklearn.utils import shuffle
df = shuffle(df)
или
df.iloc[np.random.permutation(len(df))]

df_shuffled.reset_index(drop=True) # чтобы сохранить индекс

или

df1_new, df2_new = shuffle(df1_old, df2_old, random_state=56789)

Количество истинно положительных ответов TP, истинно отрицательных TN, ложных FP, FN

1. Количество истинно положительных ответов TP

import pandas as pd

target = pd.Series([0, 1, ... 0, 1, 1])
predictions = pd.Series([1, 1 ... 1, 0, 1])

((target == 1) & (predictions == 1)).sum() 

2. Количество истинно отрицательных ответов TN

((target == 0) & (predictions == 0)).sum())

3. Количество ложноположительных ответов FP

((target == 0) & (predictions == 1)).sum()

4. Количество ложноотрицательных ответов FN

((target == 1) & (predictions == 0)).sum()

Проверить тип данных

print(df.dtypes)

Ранжирование признаков

features importance

Гистограмма плотности

import pandas as pd
x = pd.Series([1, 2, 3, 4, 5, 6, 2, 4])
x.hist(density=True, bins=8)

Круговая диаграмма plot() и matplotlib

import matplotlib.pyplot as plt
df.plot(kind='pie', y = 'count', figsize = (20, 8))
plt.legend(bbox_to_anchor=(0.75,0.75), loc="center right", fontsize=10,
---- bbox_transform=plt.gcf().transFigure)
plt.show()

Выбросы

Подсчет количества:
print(len(data.query('col < 15')) / len(data))

Поиск групп с аномальными значениями и подсчет количества по группе, убираем группы с большим количеством выбросов:
df['too_many'] = data['col_how_many'] < 20

mean_stat = df.pivot_table(index="col1", values="too_many")

good_id = mean_stat.query('too_many < 0.2')

best_data = df.query('col1_id in @good_id.index')
print (len(df))
print (len(best_data))

Срезы, query()

print(df.query('col1 == "smth"'))

df.query('col1 == True or col2 == True')

df.query('col1 == "smth" and (col2 == True or col3 == False)')

Порядок операций:
not, and, or.

Срез с условием и математической операцией:
df.query('col1 > 3 * col2 ')

Срез с методом:
df.query('col1 < col2.mean()')

Срезы с внешними параметрами не из датафрейма:
df.query('col1 <= @existing_name')

Срезы для избавления от выбросов:
data.query('col1 < 10')

Страницы

Подписка на RSS - python