[파이썬] ValueError: Expected 2D array, got 1D array instead: 오류 해결 방법
입력값이 1차원 배열이라서 발생하는 문제입니다. 1차원 배열을 2차원으로 바꿔주면 되는데, 그 방법을 알아봅시다. 아래와 같은 1차원 배열이 있습니다. ar=np.array([1,2,3,4,5]) 차원을 확인해봅시다. >>> ar.ndim 1 1차원입니다. 위 배열을 2차원 배열로 바꾸는 방법은 아래와 같습니다. ar2=ar.reshape(5,1) >>> ar2 array([[1], [2], [3], [4], [5]]) 차원을 확인해봅시다. >>> ar2.ndim 2 2차원으로 바뀌었습니다. 변환을 편하게 하는 법 변환할 때, (5,1) 을 입력했는데 이때 5는 배열 원소 수입니다. 배열 원소 수가 얼마든 상관 없이 (어쩌구,1)로 변형하고 싶을 때는 -1을 사용하면 됩니다. 아래와 같이 사용합니다. >..
2023. 9. 5.
파이썬에서 ROC 커브 그리고 AUC 구하는 방법 (사이킷런)
먼저 사용할 데이터를 설명하겠습니다. 어떤 질병의 진단에 사용하기 위해 특정 수치(value)를 정상인과 환자에서 측정하였습니다. 이 value 가 진단에 사용될 수 있는지 ROC 커브를 그려서 알아보았습니다. 코드에 대한 설명은 주석으로 대신합니다. import pandas as pd import numpy as np from sklearn.metrics import roc_curve, roc_auc_score, auc, RocCurveDisplay import matplotlib.pyplot as plt # 데이터 생성 (정상인과 환자의 진단결과값) normal=[11.1, 14.3, 13.1, 12.5, 12.4, 12.3, 12.1, 10.4 ,14.4 ,12.9] patient =[15.8, 1..
2023. 9. 5.
[파이썬 matplotlib] 그래프 그리는 방법 (fig 와 ax 의 의미 이해하기)
matplotlib 를 통해 그래프를 그리는 방법은 여러가지라 처음 접하시는 분들은 헷갈릴 수 있습니다. 가장 많이 사용하는 방법을 먼저 익히는 것이 좋은 방법 같습니다. 가장 많이 사용하는 방법은 subplots 라는 메소드를 사용하는 것입니다. 먼저 산점도 그래프를 그리는 예시를 살펴봅시다. import matplotlib.pyplot as plt x=[1,2,3] y=[5,6,7] fig, ax = plt.subplots(1,1) ax.plot(x, y, label='data1',linestyle='',marker='o') ax.legend() plt.show() 코드를 하나씩 설명하겠습니다. x와 y는 데이터입니다. (1,5), (2,6), (3,7) 이라는 점을 그래프로 그릴 것입니다. fig,..
2023. 9. 5.
[파이썬 판다스] 데이터프레임 열의 타입을 factor 로 변형
데이터프레임의 특정 열의 타입을 factor로 바꾸는 방법을 알아봅시다. 특정 열의 타입을 범주형 타입으로 바꾸는 것입니다. 먼저 데이터프레임을 하나 정의합시다. import pandas as pd L1=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]] df=pd.DataFrame(L1,columns=['C1','C2','C3'],index=['R1','R2','R3','R4']) 숫자 인덱스를 사용하여 열을 factor로 바꾸는 방법과 열 이름을 사용하여 바꾸는 방법이 있습니다. astype 메소드를 사용합니다. 1. 숫자 인덱스 사용 세번째 열의 타입을 범 df.iloc[:,2]=df.iloc[:,2].astype('category') 결과는 아래와 같습니다. 3열이 범주형 타입으로 ..
2023. 9. 5.
[파이썬 판다스] 데이터프레임 각 열의 타입 확인 방법 (dtypes, info)
먼저 데이터프레임을 하나 정의합시다. import pandas as pd df=pd.DataFrame({'C1':[1,2,3],'C2':[10,20,30],'C3':[100,200,300]},index=['R1','R2','R3']) 데이터프레임의 타입을 확인하는 메소드는 두가지가 있습니다. dtypes 와 info 입니다. 아래는 dtypes 를 적용한 결과입니다. >>> df.dtypes C1 int64 C2 int64 C3 int64 dtype: object 아래는 info 를 적용한 결과입니다. >>> df.info() Index: 4 entries, R1 to R4 Data columns (total 3 columns): # Column Non-Null Count Dtype --- ------ ..
2023. 9. 5.
[파이썬 판다스] 데이터프레임 행이름,열이름 출력하기
판다스를 불러오고 데이터프레임을 하나 정의합니다. import pandas as pd df=pd.DataFrame({'C1':[1,2,3],'C2':[10,20,30],'C3':[100,200,300]},index=['R1','R2','R3']) 정의한 데이터프레임은 아래와 같습니다. >>> df1 C1 C2 C3 R1 1 10 100 R2 2 20 200 R3 3 30 300 열 이름과 행이름을 출력하는 방법은 아래와 같습니다. 1. 열 이름 출력 >>> list(df1.columns) ['C1', 'C2', 'C3'] 2. 행 이름 출력 >>> list(df1.index) ['R1', 'R2', 'R3']
2023. 9. 5.
[파이썬 판다스] 데이터프레임 인덱싱 방법 (인덱스 vs 이름)
먼저 판다스 데이터프레임을 하나 만들어봅시다. import pandas as pd L1=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]] df=pd.DataFrame(L1,columns=['C1','C2','C3'],index=['R1','R2','R3','R4']) 만들어진 데이터프레임은 아래와 같습니다. >>> df C1 C2 C3 R1 1 2 3 R2 4 5 6 R3 7 8 9 R4 10 11 12 데이터프레임 인덱싱을 하는 상황은 아래와 같이 나뉩니다 1) 인덱싱 방법 : 인덱스 or 이름 2) 인덱싱 결과 : 행 or 열 or 복합 인덱싱 방법으로 큰 분류를 나누고, 각 방법 안에서 인덱싱 결과를 행, 열, 복합으로 출력하는 방법을 알아봅시다. 1. 인덱스를 사용하여 인덱싱 il..
2023. 9. 5.