분석 Python/Visualization(47)
-
[Python] scikitplot metric visualization (binary case)
확률값을 기반으로 시각화 scikitplot을 사용해서 이진 분류 관련된 메트릭들 시각화하기 Confusion Matrix Roc Curve KS-Test(Kolmogorov-Smirnov) Precision-Recall Curve Cumulative Gains Curve Lift Curve def metric_vis_binary(probs , y_label, classes=[1,2]) : import scikitplot as skplt plt.style.use('classic') fig , ax = plt.subplots(nrows=3 , ncols=2,figsize=(15,15)) axes = ax.flatten() skplt.metrics.plot_confusion_matrix(y_label , n..
2020.10.01 -
[Python] ratio plot
tr = np.random.choice(["male","female"],size = 1000, replace=True,p=[0.9,0.1]).tolist() te = np.random.choice(["male","female"],size = 1000, replace=True,p=[0.4,0.6]).tolist() a = tr + te aa = pd.DataFrame({"sex" :a , "var" : ["fraud"] *len(tr) + ["non-fraud"] *len(te) }) aa.groupby("var")['sex'].value_counts(normalize=True).unstack().plot(kind="bar", legend=True , stacked= True) plt.xlabel("") ..
2020.09.23 -
[seaborn] clustermap, heatmap으로 시각화하기
import seaborn as sns import sklearn from sklearn.datasets import load_diabetes , load_wine data_dict = load_wine() data = pd.DataFrame(data_dict.data,columns=data_dict.feature_names) lut = dict(zip(data_dict.target_names, "rbg")) change = dict(zip(np.unique(data_dict.target) , data_dict.target_names)) row_colors = pd.Series(data_dict.target).map(change).map(lut) change , lut Correlation Cluster..
2020.08.20 -
[Python] 결측치 시각화 missingno 사용하기
결측치에 대해서 시각적으로 보고 싶을 때 missingno가 쓸만한 것 같다. 해당 패키지를 자주 쓸것 같아서 간단하게 함수화를 해봤다. 보통 Train , Test를 나누니 그것을 기준으로 그려보는 것을 해봤다. import missingno as msno import matplotlib.pyplot as plt def msno_vis_train_test(train , test , graph_type = "bar" , fig_kws = {"figsize" : (20,5)}) : fig , ax = plt.subplots(1,2,figsize=fig_kws.get("figsize", (20,5)) ) axes = ax.flatten() if graph_type == "bar" : msno.bar(trai..
2020.07.23 -
python EDA를 위한 자동 시각화 sweetviz 사용해보기
sweetviz를 통해서 데이터의 상관관계나 분포 그리고 통계치를 보여준다. 비슷한 패키지로는 pandas_profiling이 있다. 안정성면에서는 테스트 결과 pandas_profiling이 더 좋아 보였다. nan이 있으면 아직은 에러가 나는 이유가 있다. 그래도 좋은 점이 2가지 데이터셋을 비교한다던지, 뭔가를 비교한다고 했을 때 굉장히 유용해 보인다. 예를 들어 기존 타깃 0 , 1과 예측 타겟 0 ,1을 비교한다던지 하였을 때 어떻게 구성이 다른 지도 볼 수 있어 보이고 암튼 유용할 것 같아서 공유한다! import pandas as pd import sweetviz as sv df = pd.read_csv("./../../DATA/ENB2012_data.csv") ## 시각화 advert_re..
2020.07.18 -
Hiplot 으로 하이퍼 파라미터 시각화하기
우리가 열심히 모델링을 하다 보면 하이퍼 파라미터가 쌓이게 되고, 하이퍼 파라미 터들끼리를 비교해서 최적의 하이퍼 파라미터를 찾으려고 한다. 그럴 때 문제점은 하이퍼 파라미터의 수가 많아질수록 육안으로는 파악하기가 어렵다. 그래서 메트릭 기준으로 정렬을 해서 특정한 파라미터를 찾으려는 노력을 하지만 여전히 직관적으로 보기에는 어려움이 있다. 그래서 이번에는 Facebook에서 만든 파라미터 시각화로 Parallel Plots으로 시각화해주는 Hiplot 패키지를 써보고자 한다. 저장된 파라미터는 아래 csv에 있으니 참고하길 바란다. report = pd.read_csv("./save_parameter.csv") report.head() 여기서는 mse라는 데이터를 최소화하는 파라미터를 찾고자 한다. i..
2020.07.09 -
Pandas 에서 Plotly backend 사용하기
import pandas as pd, seaborn as sns import plotly.express as px tips = sns.load_dataset('tips') tips['tip'].plot(kind = 'hist') plotly 4.8 버전부터 된다고 함. pd.options.plotting.backend = "plotly" 이렇게 사용하면 된다! tips[['tip', 'smoker']].plot.box(facet_col = 'smoker') tips.plot.scatter(x = 'tip', y='total_bill') https://plotly.com/python/box-plots/ Box Plots How to make Box Plots in Python with Plotly. plo..
2020.07.02 -
seaborn에 FacetGrid 를 활용해서 다중 플랏 해보기
import pandas as pd import seaborn as sns from sklearn.datasets import load_iris def make_df(dict_) : pd_result = pd.DataFrame(dict_["data"]) if dict_.get("feature_names",None) is not None : pd_result.columns = dict_["feature_names"] if dict_.get("target",None) is not None : pd_result["target"] = dict_["target"] if dict_.get("target_names", None) is not None : d = dict(zip(np.unique(dict_["targe..
2020.07.02 -
sinkhorn으로 동영상 만들어보기
https://colab.research.google.com/drive/1HZaJ4p2sjkXDUgIWsr0OsxP_IYNGRhbU#scrollTo=Tf53CGLvKNya Google Colaboratory colab.research.google.com 페이스북에 올라온 것을 한글이 가능하게 바꾸고 글자마다 색깔을 바꾸고 해봤습니다. 아마 지금 코드에서 바꿀 수 있는 색깔 수 때문에 글자수가 제한될 수 있으니, 그 부분만 수정하면 될 것 같습니다. !pip install tensorflow_gpu==1.15.0 import matplotlib as mpl import matplotlib.pyplot as plt %config InlineBackend.figure_format = 'retina' !apt ..
2020.05.27 -
CNN 시각화 사이트 소개 (Convolutional Neural Networks)
CNN을 시각화한 사이트를 발견하여 소개합니다. 아래의 유튜브를 보고 굉장히 인상적이었습니다. https://www.youtube.com/watch?v=HnWIHWFbuUQ&feature=youtu.be 각 채널마다 어떻게 작동해서 어떻게 피처맵이 생기는지 보여줍니다. 그리고 한 커널에서 어떻게 연산이 되서 다음 피처 맵으로 나타나는지를 보여줍니다. Convolution을 처음 배우면 어떻게 연산이 되는지 헷갈리는데, 이러한 시각적인 툴도 제공해서 좀 더 빠르게 배울 수 있을 것 같습니다. 아래 사이트에서 직접 해볼 수 있으니 해보시면 좋을 것 같습니다! https://poloclub.github.io/cnn-explainer/ CNN Explainer poloclub.github.io
2020.05.03 -
seaborn layout 동적으로 만드는 방법 소개
python에서는 시각화를 할 때 이쁘게 그려주는 seaborn을 많이들 사용한다. seaborn을 사용할 때 subplot을 어떻게 주면 좋을지에 대해서 발견한 코드를 공유한다. import seaborn as sns import pandas as pd titanic = pd.read_csv("./../DATA/train.csv") titanic.head() 아래 코드에서는 컬럼을 몇 열로 할지만 정해주면 동적으로 행을 채워준다. categorical_vars = ['Survived','Pclass','Sex','SibSp','Parch','Cabin','Embarked'] num_plots = len(categorical_vars) total_cols = 3 total_rows = num_plots/..
2020.04.19 -
subplot zip을 사용해서 쉽게 나열해서 시각화하기 (seaborn boxplot)
아래 그림처럼 a , a.1 같은 데이터를 다르게 처리한 후 옆에 시각화해서 보고 싶을 때가 있다. 사실 전체 루프를 돌려도 되지만, 쉬운 방법이 있어서 공유한다. import matplot.pyplot as plt pair = list(zip(['a', 'b', 'c', 'd', 'e'], ['a.1', 'b.1', 'c.1', 'd.1', 'e.1'])) ## 이미지 크기 및 subplots 개수 조절 fig , ax = plt.subplots(len(pair),2,figsize=(5,10)) ## 여백 조정 plt.subplots_adjust(left=0.2, bottom=0.05, right=0.99, top=0.99, wspace=0.6, hspace=0.3) axes = ax.flatten()..
2020.04.08