인공지능/공부

고급 인공지능 활용 - 중간고사 정리 (파이썬 기본, 데이터 정리, 인공지능이란...)

이게될까 2024. 4. 13. 23:23
728x90
728x90

지능 인간이 가지는 고유한 성질, 생각하고 이해함으로써 행동으로 옮기는 능력

인공지능 : 컴퓨터가 학습하고 생각하여 스스로 판단할 수 있게 만드는 기술

사전적 개념 지성을 갖춘 존재, 시스템에 의해 만들어진 인공지능
전통적 개념 컴퓨터가 인간의 행동을 모방할 수 있게 하는 소프트웨어
기술적 개념 인간의 지능으로 할 수 있는 사고 합승 등을 컴퓨터가 할 수 있게 하는 방법을 연구하는 학문

프로그래밍 : 사람이 구현     vs      인공지능 : 스스로 데이터 학습

인공지능의 첫 등장 1956년 다트머스 컨퍼런스

전제: 학습의 모든 측면, 지능의 모든 특성이 원칙적으로 정확히 기술> 묘사하는 기계 연구

목표 사람의 다양한 능력을 컴퓨터가 대신

인공지능의 발달> 로봇의 기능 향상> 실생활에 로봇 도입 > 새로운 결과물

장점: 노동 대체, 자동화(RPA – 사람이 하는 업무 자동화), 개인 능력 격차 완화

단점: 멍청한 AI, 법적, 윤리적 책임 소재 문제, 빈부 격차의 심화, 예측 불가능한 AI(경험X상황)

빅데이터의 중요성!

분류는 지적수준, 기능발전, 구현방식(지식(인지, 추론)기반, 데이터(머신러닝, 데이터 마이닝) 기반)으로 나뉨

인공지능 서비스 개발 과정 : 데이터 수집> 저장 및 처리> 프로그램 제작> 활용 및 서비스 배포

활용, 배포 하드웨어  
IOT – 수집 센싱
네트워크
서비스 인터페이스 기술
5G 기술 전송 초고속성
초연결성
초저지연성
클라우드 장점 신속, 유연한 인프라 관리
클라우드 단점 비용, 유출에 대한 불안함

 

리스트[] .append(), remove() 가능
튜플() 위에 것 불가
딕셔녀리{‘ ‘: [‘ ‘, ‘ ‘]}  

for I in 리스트형 :

def ______    :

     return _____

 

numpy다차원 리스트나 큰 데이터 처리에 유리

1.     빠른 속도, 효율적 메모리 사용

2.     반복문 사용x – 병렬처리, 함수를 한번에 많은 요소에 적용

3.     선형대수 관련 함수

4.     다른 언어와 통합 사용 가능

Import numpy as np

배열 생성 np.array([1,23,4,5,6],int)

모양: df.shape 랭크: df.ndim 크기: df.size 용량: import sys  df.itemsize

재배치: df.reshape(x,y) 내용출력 df[ : , : : ] 전부다 1: np.ones_like(df)

아이덴티티 np.identity(n=3,dtype =int) 같은데 대각선 위치 바꾸기 np.eye(N = 10, M = 15, k=3)

랜덤 출력 np.random.uniform(시작,,개수) 정규화된 평균 np.random.normal(평균,분산,개수)

랜덤 정수 출력 np.random.randint(시작, , 개수)

총합 : df.sum()  열 총합 df.sum(axis=0) 평균 : mean(axis=0)

두 배열 더하기 : np.vstack((a,b)) 두 배열 같은 열끼리 붙이기 np.hstack((a,b))

차원 지정해서 더하기 np.concatenate((a,b),axis =__)

행렬 T하기 from traitlets.config.application import T    df.T

행렬 곱하기a.dot(b)  전부만족: (x>3).all()  하나라도 만족: (x>3).any()

어디서 만족하냐 np.where(조건, 참일시, 거짓일시)

크기 별 인덱스 순서 np.argsort(_) 인덱스 최대,최소 np.argmax(__)

 

판다스 – import pandas as pd

표 만들기: pd.Series(data = [ ], index=[ ]) or (완성형, dtype = int, name ‘we’) or (완성형, index =_)

데이터 읽을 때

from google.colab import drive    drive.mount(‘/content/drive’)

df = pd.read_csv(‘/content/drive/MyDrive/Colab Notebooks/housing.data’, sep’\s+’,header=None)

엑셀 열기 !pip install openpyxl    df = pd.read_excel 뒤엔 똑같음

직접 만들기 pd.DataFrame(딕셔너리로 된것, columns =[‘ ‘, ‘ ‘]) 원하는 것만 추출 가능

몇 개만 출력 df.head() 원하는 것 출력 df[[‘ ’ ,’ ’]][ : 3 ] 지우기: del df[‘ ‘]

원하는 곳 출력: df.loc[_:_,[‘ ‘ ,’ ‘]]   행삭제 df.drop(_, inplace = True)

그룹화 df.groupby([‘ ‘, ‘ ‘])[‘ ‘].sum() 그룹에서 최솟값 df.agg(min) 그룹 평균값 df.agg(np.mean)

병합하기 (같은 사람 다른 정보 )

df.merge(병합할, 대상, on = ‘무엇으로’, how=’기준’(right, left, outer, inner))

연결 (다른 사람 같은 정보) df.concat([__,__,__], axis=0)  인덱스 정렬  df.reset_index(drop = True)

데이터 시각화 - Import matplotlib.pyplot as plt

그래프 그리기 plt.plot(x , y , colot = ‘ ’, linestyle = ‘ ‘, label = ‘  ‘)

부가 사항 plt.title(“  “) plt.ylabel(‘ ‘) 점 그래프 plt.scatter(x, y, c = ‘ ‘, marker = ‘ ‘)

바 그래프 plt.bar(x, y, c = ‘ ‘, width = 3) (x의 범위의 밀집도) plt.hist(x , bins = 범위)

박스 그래프 plt.boxplot(x) x의 중앙값, 25% ~ 75%를 박스에 표현

시본 seaborn 라벨 자동 생성, 데이터프리임과 x,y만 지정

Import seaborn as sns

직선형 sns.lineplot(x=’__’, y = ‘__’, data = __ , hue= ‘범례’)

점들 사이 선형 회귀 sns.regplot(x = ‘__’, y=’__’, hue= ‘__’, x_ci(신뢰구간) = )

점들 hue에 따라 색 구분 sns.scatterplot(x = ‘__’, y = ‘__’, hue = ‘ ‘, data =)

데이터를 x에서 hue에 따라 바형으로 그림 sns.countplot( x = ‘_’, hue = ‘_‘, data = )

두개에 대해 막대 그래프 sns.barplot(x= ‘ ‘, y = ‘ ‘, data)

x,y에 대해 hue로 나눈 바이올린형 그래프 sns.volineplot(x = ‘__’, y = ‘__’, hue = ‘ ‘, data =, palette = ‘muted’)

트리형 그래프 hue는 색구분  sns.swarmplot(x = ‘__’, y = ‘__’, hue = ‘ ‘, data =, palette = ‘muted’)

그래프 여러가지 g=sns.FacetGrid(표현할 것(),col= ‘기준’, row = ‘기준’)

g.map(____, ‘x’, ‘y’) 

플롯리 사용자와 상호작용 가능 import plotly.express as px

fig = px.scatter(df, x='sepal_width',y='sepal_length')
fig.show()
fig = px.parallel_coordinates(df,color='species_id',
                               labels={'species_id':'Species',
                                       'sepal_width':'Sepal Width',
                                       'sepal_length':'Sepal Length',
                                       'petal_width':'Petal Width',
                                       'petal_length':'Petal Length'},
                               color_continuous_scale= px.colors.diverging.Tealrose,
                               color_continuous_midpoint = 2)
fig.show()

 

머신러닝 선형회귀 장 : 쉽다 빠르다  : 예측력 낮음, 선형관계에서 벗어나면 별로

오버 피팅: 학습 과다> 예측 하강> 높은 편향    언더 피팅: 하급 저하> 예측 하강> 높은 분산

데이터 값 보기 df.describe()

데이터 전처리 종속 변수(y)와 독립 변수(x) 분리

X = df.drop[‘y에 넣을 값’]] y=[‘ ‘]

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X,y, test_size = 0.2, random_state = 100)

from sklearn.linear_model import LinearRegression     model = LinearRegression()

학습 model.fit(X_train, y_train)  예측 pred=model.predict(X_test)

RMSE – 루트 제곱 오차, MAE – 평균 절대값 오차, MSE – 평균 제곱 오차

R^2 독립변수가 종속 얼마나 설명하는지

From sklearn.metrics import mean_squared_error 이건 RMSE mean_squared_error(y_test, pred)**0.5

이건 R^2 model.score(X_train, y_train)

종속 변수에 끼치는 영향 model.coef_ 를 보기 쉽게 pd.Series(model.coef_, index =X.columns)

 

로지스틱 회귀 – yes or no

: 구현 해석 쉽다, 모델링 시간 짧다    : 에측력 별로, 선형 관계를 전재로 함

빈 값 확인 data.info()   데이터간 관계 확인 data.corr()

필요없는 데이터 버리기 data.drop([‘ __’,’__’], axis=1)

글자로 된 변수들 숫자로 바꾸고 첫번째 버리기

data= pd.get_dummies(data, columns = [‘ ‘, ’ ‘], drop_first = True)

연관된 값은 합쳐서 하기

data[‘c’] = data[‘a’] + data[‘b’]     data.drop([‘b’ ,’c’], axis=1, inplace=True)

from sklearn.model_selection import train_test_split

X= data.drop (‘survived’, axis = 1)    y= data[‘survived’]

X_train, X_test, y_train, y_test = train_test_split(X,y, test_size = 0.2, random_state = 100)

From sklearn.linear_model import RogisticRegression model = LogisticRegression()

훈련 model.fit(X_train, y_train)   예측 pred = model.predict(x_test)

From sklearn.metrics import accuracy_score   예측 점수 accuracy_score(y_test, pred)

KNN- 거리기반   : 직관, 간단, 별도과정 X  : 느리고, 이상한값 많으면 성능 보장X

종속 변수 분포 확인하기  import seaborn as sns

Sns.barplot(x=data[‘결과값’].value_count().index , y=data[‘결과값’].value.count())

빈 값 확인 data.isna().sum() 빈값 지우기: data.dropna(subset=[‘빈칸이면 지울 이름’])

빈 값 중간값으로 채우기 data.fillna(data.median(), inplace=True)

스케일링 독립변수의 변동 폭 맞추기

표준화 StandardScaler() 평균 0, 표준 편차1   이상치에 영향 받음
로버스트 RobustScaler() 중간값 사용, 75%, 25% 지점 차로 나눈다 아웃라이어 영향력O
최소 최대 MinMaxScaler() 최대1, 최소0으로 변환 -> 분포 특성 그대로 유지

주의점 1. 종속 변수 제외 2. 훈련셋, 시험 셋 나누고 나서 훈련셋에서만 진행

표준화 스케일링

From sklearn.preprocessing import StadardScaler()    st_scaler = StandardScaler()

from sklearn.model_selection import train_test_split

X = df.drop[‘y에 넣을 값’]] y=[‘ ‘]

X_train, X_test, y_train, y_test = train_test_split(X,y, test_size = 0.2, random_state = 100)

st_scaler.fit(X_train) 훈련값으로 스케일링

X_train_scaled =st_scaled.transform(X_train)   X_test_scaled =st_scaled.transform(X_test)

하이퍼 파라미터 조정( 반복문으로 p1,2k값 바꾸면서 최대 점수 찾기)

From sklearn.neighbor import KNeighborsClassifier

Knn = KNeighborsClassifiers(p= 1, n_neighbors = __ )   knn.fit(X_train_scaled,y_train)

Pred = knn.predict(X_test_scaled)

From sklearn.metrics import accuracy_score   예측 점수 accuracy_score(y_test, pred)

 

728x90