본문 바로가기

728x90
반응형
SMALL

데이터분석

(32)
[Python] 23. PCA(차원축소),T-SNE from sklearn.datasets import load_iris, load_wine from mpl_toolkits.mplot3d import Axes3D # 3차원 시각화 가능 import matplotlib.pyplot as plt import pandas as pd import numpy as np from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler from sklearn.pipeline import make_pipeline import matplotlib.pyplot as plt import seaborn as sns PCA(차원축소) 3차원까지 시각화 가능하나 4차원 이상은 무리 -> 차..
[Python] 22. Kmeans from sklearn.cluster import KMeans import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt import mglearn from sklearn.datasets import load_iris from sklearn.model_selection import GridSearchCV import warnings warnings.simplefilter('ignore') Kmeans mglearn.plots.plot_kmeans_algorithm() # 랜덤하게 점 찍은 후 가까운 점들 분류하고 센터로 이동 분류 이동 ... 데이터 불러오기 (pd.read_csv) python 파..
[Python] 17. Decision Tree(의사결정나무) : iris, breast_cancer from sklearn.datasets import make_classification from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split, GridSearchCV from sklearn.model_selection import cross_val_score, cross_validate import multiprocessing import os from sklearn.datasets import load_iris from sklearn.pipeline import make_pipeline, Pipeline from sklearn.preprocessing import Sta..
[Python] 15. 이미지분류 : mnist, MLPClassifier import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt import mglearn from sklearn.model_selection import train_test_split from sklearn.neural_network import MLPClassifier import sklearn.metrics as m from sklearn.datasets import fetch_openml import warnings warnings.simplefilter('ignore') from sklearn.datasets import fetch_openml mnist = fetch_openml('mnist_..
[Python] 14. NN : XOR문제, MLPClassifier import numpy as np import pandas as pd import seaborn as sb import matplotlib.pyplot as plt import mglearn from sklearn.model_selection import train_test_split from sklearn.neural_network import MLPClassifier from sklearn.linear_model import LogisticRegression import warnings warnings.simplefilter('ignore') x_data = np.array( [[0,0],[0,1],[1,0],[1,1]]) y_data = np.array( [[0],[1],[1],[0]]) Logis..
[Python] 11. softmax import numpy as np def fn(x): print(x/x.sum()) a = np.array([2.0,1.0,0.1]) fn(a) [OUT]: [0.64516129 0.32258065 0.03225806] -> 전체 합에서 차지하는 비율 Softmax def softmax(x): e = np.exp(x) print(e) print( e/np.sum(e)) a = np.array([2.0,1.0,0.1]) softmax(a) [OUT]: [7.3890561 2.71828183 1.10517092] [0.65900114 0.24243297 0.09856589] -> e^x를 하여 확률이 높은곳에 가중치를 더 주는 형식 review - 다중분류 시 사용되는 softmax
[Python] 7. Sigmoid 함수 import numpy as np import pandas as pd import matplotlib.pyplot as plt import math print(2**2) print(2**3) print(2**(-2)) print(2**(-3)) [OUT]: 4 8 0.25 0.125 math.e [OUT]: 2.718281828459045 Sigmoid (시그모이드 함수) x=0: 0.5이상의 값을 뱉음 def sigmoid(z): return 1/(1+math.e**(-z)) print(sigmoid(-100)) print(sigmoid(-10)) print(sigmoid(-1)) print(sigmoid(0)) print(sigmoid(1)) print(sigmoid(10)) print(sigmoid..
[Python] 5. 문자열encoding : LabelEncoder, OneHotEncoder, get_dummies(), make_column_transformer 예제 import pandas as pd import numpy as np import seaborn as sns from sklearn.datasets import load_boston, load_iris from sklearn.linear_model import Ridge,Lasso,ElasticNet,LinearRegression from sklearn.preprocessing import PolynomialFeatures from sklearn.pipeline import make_pipeline from sklearn.preprocessing import StandardScaler from sklearn.neural_network import MLPRegressor from sklearn.model_..
[Python] 4. 다중선형회귀 : 릿지L2규제, 라쏘L1규제, 엘라스틱넷 import pandas as pd import numpy as np import seaborn as sns from sklearn.datasets import load_boston, load_iris from sklearn.linear_model import Ridge,Lasso,ElasticNet,LinearRegression from sklearn.preprocessing import PolynomialFeatures from sklearn.pipeline import make_pipeline from sklearn.preprocessing import StandardScaler from sklearn.neural_network import MLPRegressor from sklearn.model_..
[Python] 2. 정규화 : 상관관계, 다중공선성 import pandas as pd import numpy as np import seaborn as sns from sklearn.datasets import load_boston, load_iris from sklearn.linear_model import LinearRegression,Ridge, SGDRegressor from sklearn.neural_network import MLPRegressor from sklearn.model_selection import train_test_split from sklearn.model_selection import GridSearchCV from sklearn.model_selection import cross_val_score from sklearn...
[Python] 0. sklearn 구조 scikit-learn 특징다양한 머신러닝 알고리즘을 구현한 파이썬 라이브러리심플하고 일관성 있는 API, 유용한 온라인 문서, 풍부한 예제머신러닝을 위한 쉽고 효율적인 개발 라이브러리 제공다양한 머신러닝 관련 알고리즘과 개발을 위한 프레임워크와 API 제공많은 사람들이 사용하며 다양한 환경에서 검증된 라이브러리scikit-learn 주요 모듈 estimator API일관성: 모든 객체는 일관된 문서를 갖춘 제한된 메서드 집합에서 비롯된 공통 인터페이스 공유검사(inspection): 모든 지정된 파라미터 값은 공개 속성으로 노출구성: 많은 머신러닝 작업은 기본 알고리즘의 시퀀스로 나타낼 수 있으며, Scikit-Learn은 가능한 곳이라면 어디서든 이 방식을 사용합리적인 기본값: 모델이 사용자 지정 파..
[Python] 7. t검정,카이제곱 검정,F검정 import scipy.stats as stats import numpy as np import matplotlib.pyplot as plt import math import matplotlib matplotlib.rcParams['font.family']='Malgun Gothic' matplotlib.rcParams['axes.unicode_minus'] = False 지난 시간 복습용 연습문제 표본 : 20명의 벤처기업 경영자 혈압 평균 135, 표준편차 25 일반인의 혈압 평균 115인 경우 벤처기업 경영자의 혈압이 일반인보다 높은지 아닌지 검정하시오 (양측 검정) 95% Solution 표본 : 20명의 벤처기업 경영자 혈압 평균 135, 표준편차 25 일반인의 혈압 평균 115인 경우 벤처기업..
[Python] 6. 표준정규분포(z검정,t검정) import numpy as np import pandas as pd import matplotlib.pyplot as plt import math 정규분포 확률분포함수 pmf 확률질량함수(probability mass function) pdf 확률밀도함수(probability density function) cdf 누적분포함수(cumulative distribution function) ppf 누적분포함수의 역함수(inverse cumulative distribution function) sf 생존함수(survival function) = 1 - 누적분포함수 isf 생존함수의 역함수(inverse survival function) rvs 랜덤 표본 생성(random variable sampling) x..
[Python] 5. 모집단과 표본 : 모평균 추정, 중심극한정리 기술통계 분포를 표현하는 또다른 방법은 분포의 특징을 나타내는 여러가지 숫자를 계산하여 그 숫자로서 분포를 나타내는 것이다. 이러한 값들을 기술통계(descriptive statistics)라고 한다. 대표적인 기술통계는 다음과 같다. 표본평균, 표본중앙값, 표본최빈값 표본분산, 표본표준편차 표본왜도, 표본첨도 표본평균 표본평균(sample mean, sample average): 데이터 분포의 대략적인 위치를 나타낸다. 이 식에서 𝑁은 자료의 개수, 𝑖는 자료의 순서(index)를 뜻한다. 분산과 표준편차 데이터가 얼마나 변동(variation)하고 있는지를 알아야 한다. 이러한 정보를 알려주는 특징값이 표본분산(sample variance) 또는 표본표준편차(sample standard deviati..
[Python] 3. 공분산, 상관계수 import numpy as np import pandas as pd import matplotlib.pyplot as plt 데이터 불러오기 (pd.read_csv) python 파일 경로에 data3 폴더 만든 후 다음의 ch2_scores_em.csv파일 넣어놓기 df = pd.read_csv('data3/ch2_scores_em.csv', index_col='student number') df.head() # 이해를 위해 10개만 따로 발췌해서 보도록 하자 en_scores = np.array(df['english'])[:10] ma_scores = np.array(df['mathematics'])[:10] scores_df = pd.DataFrame({'english':en_scores, 'ma..
[Python] 24. pandas DataFrame 데이터 분석 실습 종합 문제 : sort(), pd.cut(),apply(lambda), sr.quantile(), value_counts(), histogram(), pie chart 예제 import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib matplotlib.rcParams['font.family']='Malgun Gothic' matplotlib.rcParams['axes.unicode_minus'] = False 국어점수 데이터 sr = pd.Series( [90,90,55,60,76,80,76,88,30,25], name="국어점수" ) sr.index=['홍길동','이순신','임꺽정','정난정', '이이','이황','정도전','김철수1', '김철수2','김철수3'] sr [OUT] : 홍길동 90 이순신 90 임꺽정 55 정난정 60 이이 76 이황 80 정도전 76 김철수1..
[Python] 23. pandas DataFrame MultiIndex column : levels, get_level_values(),pd.MultiIndex.from_product()예제 import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib import rc import matplotlib rc('font', family='AppleGothic') plt.rcParams['axes.unicode_minus'] = False data = np.random.randint(1,10, size=4) data array([2, 9, 5, 7]) data = np.random.randint(30,101, size=(4,6) ) data array([[94, 42, 91, 67, 54, 94], [87, 30, 83, 31, 92, 65], [83, 43, 99, 43, 37, 59], [82, 88..
[Python] 18. pandas DataFrame pivot_table : groupby(), sum(), max(), min(), count(), agg(), aggfunc=[] 예제 import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib import rc import matplotlib rc('font', family='AppleGothic') plt.rcParams['axes.unicode_minus'] = False 데이터 불러오기 (pd.read_csv) python 파일 경로에 data폴더 만든 후 다음의 hotel.xlsx 파일 넣어놓기 df = pd.read_csv('data/grade.csv') df g = df.groupby('학년') g.mean() df.info() # pivot_table에서는 수치형 데이터들의 mean 계산(기본) [OUT] : RangeIndex..
[Python] 17. pandas DataFrame groupby : groupby(), sum(), max(), min(), count(), agg()예제 import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib import rc import matplotlib rc('font', family='AppleGothic') plt.rcParams['axes.unicode_minus'] = False 데이터 불러오기 (pd.read_csv) python 파일 경로에 data폴더 만든 후 다음의 hotel.xlsx 파일 넣어놓기 df = pd.read_excel('data/hotel.xlsx',index_col=0) df.head() df['grade'].unique() [OUT] : array([10, 8, 6, 9, 7, 5]) df['grade'].value_c..
[Python] 16. pandas DataFrame 상관관계 : corr(),heatmap()예제 import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib import rc import matplotlib rc('font', family='AppleGothic') plt.rcParams['axes.unicode_minus'] = False 데이터 불러오기 (pd.read_csv) python 파일 경로에 data폴더 만든 후 다음의 crime_in_Seoul.csv 파일 넣어놓기 df = pd.read_csv('data/crime_in_Seoul.csv',index_col=0,encoding = 'euc-kr',thousands = ',') df.head(20) 상관관계 r이 -1.0과 -0.7 사이이면..
[Python] 15. pandas DataFrame 통계&시각화 : sum(), unstack(), mean(), values, min(), idxmax(), median(), quantile(), count(), describe()예제 import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib import rc import matplotlib rc('font', family='AppleGothic') plt.rcParams['axes.unicode_minus'] = False data = {'eng':[10,30,50,70], 'kor':[20,40,60,80], 'math':[90,50,20,70]} df = pd.DataFrame(data, index=['a','b','c','d'] ) df def fn( v ): print("=========") print("v=>",v) print("=========") return v.sum() d..
[Python] 13. pandas DataFrame 추가 수정 삭제 검색 정렬 : dropna(subset=[]),fillna(),isna(),sort_values(),sort_index()예제 import pandas as pd import numpy as np data = {'eng':[10,30,50,70], 'kor':[20,40,60,80], 'math':[90,50,20,70]} df = pd.DataFrame(data, index=['a','b','c','d'] ) df 추가 컬럼 추가 df['my1'] =[1,2,3,4] #컬럼이 있으면 수정, 없으면 추가 df['my2'] = df['kor'] + df['eng'] df 행 추가 data = {'eng':[10,30,50,70], 'kor':[20,40,60,80], 'math':[90,50,20,70]} df = pd.DataFrame(data, index=['a','b','c','d'] ) df df.loc['e'] =[1,2..
[Python] 11. pandas DataFrame 인덱싱(Indexing), 슬라이싱(Slicing) 예제 import pandas as pd import numpy as np data = {'eng':[10,30,50,70], 'kor':[20,40,60,80], 'math':[90,50,20,70]} df = pd.DataFrame(data, index=['a','b','c','d'] ) df # df['a'] # df['컬럼명'] df['eng'] [OUT] : a 10 b 30 c 50 d 70 Name: eng, dtype: int64 df[['eng','math']] df['eng']['a':'c'] [OUT] : a 10 b 30 c 50 Name: eng, dtype: int64 df[['eng']] # df[슬라이싱(row)] df[1:3] df df['b':'c'] iloc 인덱싱 슬라이싱(..
[Python] 10. pandas DataFrame 속성 : ndim, shape, len(), size, T, index, keys(), columns, values, dtypes, info() 예제 import pandas as pd import numpy as np data = {'eng':[10,30,50,70], 'kor':[20,40,60,80], 'math':[90,50,20,70]} df = pd.DataFrame(data, index=['a','b','c','d'] ) df df.ndim #몇차원 [OUT] : 2 df.shape #(행, 열) [OUT] : (4, 3) df.shape[0] #행의 갯수 [OUT] : 4 len(df) #행의 갯수 [OUT] : 4 df.size #데이터의 갯수 [OUT] : 4 df.T df.index [OUT] : Index(['a', 'b', 'c', 'd'], dtype='object') df.keys() [OUT] : Index(['eng', ..
[Python] 09. pandas DataFrame import pandas as pd import numpy as np d1 = [[1,2],[3,4],[5,6]] d2 = [(1,2),(3,4),(5,6)] d3 = [{'kor':1,'eng':2}, {'kor':3,'eng':4}, {'kor':5,'eng':6}, ] d4 = {'kor':[1,3,5],'eng':[2,4,6]} df1 = pd.DataFrame(d1, index=['a','b','c'],columns=['eng','kor']) df1 df2 = pd.DataFrame(d2) df2 df3 = pd.DataFrame(d3) df3 df4 = pd.DataFrame(d4) df4 review - DataFrame 만들기
[Python] 04. pandas Series 연산 : 산술관계논리(element wise),isin(),between()예제 import pandas as pd import numpy as np data = {'aa':10,'bb':20,'cc':30,'dd':40, 'ee':50} sr = pd.Series(data, name='국어점수') sr [OUT] : aa 10 bb 20 cc 30 dd 40 ee 50 Name: 국어점수, dtype: int64 sr.index [OUT] : Index(['aa', 'bb', 'cc', 'dd', 'ee'], dtype='object') 산술관계논리(element wise) sr+1 [OUT] : aa 11 bb 21 cc 31 dd 41 ee 51 Name: 국어점수, dtype: int64 sr*2 [OUT] : aa 20 bb 40 cc 60 dd 80 ee 100 Name:..
[Python] 07. numpy 종합 예제 : matplotlib,시각화,np.loadtxt(),plt.show(),np.array(),zip(),np.quantile() import numpy as np 데이터 불러오기 (np.loadtxt) python 파일 경로에 data폴더 만든 후 다음의 births.txt 파일 넣어놓기 birth = np.loadtxt( 'data/births.txt', delimiter=',', dtype=np.int64) # data폴더 안의 births.txt파일 ','로 구분하여 load하기 birth.shape # 132행 3열 [OUT] : (132, 3) birth # 연도, 남아수, 여아수로 구성되어있음 [OUT] : array([[ 1880, 90993, 110491], [ 1881, 91954, 100745], [ 1882, 107850, 113688], [ 1883, 112321, 104629], [ 1884, 129022,..
[Python] 06. numpy 2차원 데이터 : boolean indexing,vstack(),hstack(),axis=0,axis=1예제 import numpy as np data = np.array( [ [1,2,3],[7,5,2],[10,1,8],[6,3,4] ] ) data [OUT] : array([[ 1, 2, 3], [ 7, 5, 2], [10, 1, 8], [ 6, 3, 4]]) 2차원 데이터 인덱싱(indexing), 슬라이싱(slicing) 예제 data.shape [OUT] : (4, 3) data.reshape(-1,2,2) # [면,행,열], -1은 알아서 설정하라는 의미 [OUT] : array([[[ 1, 2], [ 3, 7]], [[ 5, 2], [10, 1]], [[ 8, 6], [ 3, 4]]]) data # 위에서 reshape을 했지만 data에 담지 않았으므로 바뀌지 않음 [OUT] : array([[ ..

728x90
반응형
LIST