데이터 전처리 ( 그룹 )

8. 그룹.html
0.28MB
8. 그룹.ipynb
0.03MB

 

 

8. 그룹

 

 

 

728x90

 

 

 

 

 

데이터 전처리 ( 시계열 )

7. 시계열.ipynb
0.03MB
7. 시계열.html
0.30MB

 

 

7. 시계열

 

 

 

728x90

 

 

 

 

 

데이터 전처리 ( 원 핫 인코딩 )

 

원 핫 인코딩

6. 원 핫 인코딩.ipynb
0.01MB
6. 원 핫 인코딩.html
0.27MB

 

6. 원 핫 인코딩

 

 


728x90

 

 

 

 

 

모델 생성 및 평가

5. 모델 생성 및 평가.html
0.30MB
5. 모델 생성 및 평가.ipynb
0.05MB

 

 

 

 

5. 모델 생성 및 평가

 

728x90

 

 

 

 

 

데이터 전처리 ( 이상치, 중복 데이터, 문자 데이터 )

 

이상치

• 다른 데이터보다 아주 작거나 큰 값을 말한다

• 데이터를 분석할 때 이상치는 의사결정에 영향을 미칠 수 있다

• 그러므로 이상치는 제거하거나 치환처리한다

 

4분위수

 

새 파일 생성 및 2 둘 esc 후 m 눌러서 마크다운 형식으로 변경 후 내용 작성 > Ctrl + Eneter

 


이상치 데이터 처리

2. 이상치.html
0.32MB
2. 이상치.ipynb
0.05MB

 

2. 이상치

 

 


중복 데이터 처리

3. 중복데이터.html
0.27MB
3. 중복데이터.ipynb
0.01MB

 

3. 중복데이터

 

 


문자 데이터 처리

4. 문자 데이터.html
0.29MB
4. 문자 데이터.ipynb
0.03MB

 

4. 문자 데이터

 

 


 

728x90

 

 

 

 

 

데이터 전처리 ( 결측값 대체, 치환, 삭제 )

 

 

 

 

 

결측 데이터 처리

결측치 확인 > 결측치 확인 후 대체 및 제거 > 결측치 반영 확인

( 데이터의 양이 많을 경우 결측치를 제거, 데이터의 양이 적을 경우 대체 )

결측데이터.html
0.37MB

 

 


결측데이터

 

 

 

실습 예제 1

2.Quiz.pdf
5.74MB

 

예제 풀이 1

2.Quiz-풀이.pdf
5.59MB

 

 

 

 

 

 

실습 예제 2

2.Quiz.pdf
5.74MB

 

예제 풀이 2

4.Quiz-loan(결측값)-풀이.pdf
2.99MB

 

비밀번호 : 댓글

728x90

 

 

 

 

 

환경 세팅

 

jupyter notebook 설치 - 아나콘다에서 제공하는 하나의 툴

※ 파이썬 설치가 되어있어야 함 ※

 

기존에 설치되어 있던 anaconda3 를 삭제하고 진행

기존 설치 Anaconda 삭제

 

Anaconda 다운로드를 위해 접속

 

 

Distribution | Anaconda

Anaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine.

www.anaconda.com

 

Skip registration 클릭

 

installer 다운로드

 

data_set 다운로드

data_set-master.zip
2.34MB

 

출처 : https://github.com/ChoHeeWon00/data_set

 

GitHub - ChoHeeWon00/data_set

Contribute to ChoHeeWon00/data_set development by creating an account on GitHub.

github.com

 

파이썬 기본 문법

arr = [10, 20, "안녕"];

print(arr);

print(type(arr));

for i in arr :
    print(i);

print("=" * 20);
dic = {};
dic['num'] = "아무거나";
print(dic);

for k, v in dic.items():
    print(k, " : ", v);

arr = 100;
print(type(arr));

while arr < 103:
    arr += 1;
    print( arr );


for i in range(5):
    print(i);


for i in range(1,5):
    print(i);


bool = True
if bool == True:
    print("같다");

bool = 100;
if bool > 90:
    print("90보다 크다")
elif bool > 80:
    print("80보다 크다")
else:
    print("그 외의 값")

def test(a, b, c):
    print("test 호출");
    arr = [10, 20, 30];
    arr.append(a);
    arr.append(b);
    arr.append(c);
    return arr;

list_num = test(10, 1.123, "안녕");
print(list_num);

 

Anaconda3 설치

Next > I Agree > Just Me(recommended) 체크 후 Next > Next > Install

 

깃허브에서 받은 zip 파일 압축해제 및 디렉토리 이름 data_set 으로 변경

 

- Dataset 구하는 사이트 -

 

Find Open Datasets and Machine Learning Projects | Kaggle

Download Open Datasets on 1000s of Projects + Share Projects on One Platform. Explore Popular Topics Like Government, Sports, Medicine, Fintech, Food, More. Flexible Data Ingestion.

www.kaggle.com

 

Dataset 구하는 사이트 - 캐글

 

Jupyter Notebook 검색해서 실행 ( anaconda3 가 설치되었다면 검색될 것임 )

 

Jupyter Notebook 이 실행된 모습 ( 이제부터 축약해서 jupyter 라고 칭하겠음 )

 

Jupyter 기본 경로 : C 드라이브 > 사용자 > 사용중인 home 디렉토리

 

기본 경로를 변경할 것임

 

 

 

메모장으로 열기

 

workspaces_dir 에 내가 만든 폴더를 설정

 

Jupyter Notebook 마우스 우측 클릭 > 속성 > 바로가기 탭에서 대상의 위치를 내가 만든 디렉토리로 변경 > 적용 > 확인 후 Jupyter 재시작

 

홈 디렉토리가 변경되었음

 

마우스 우측클릭하여 새 폴더 생성 및 폴더 더블클릭하여 접속

 

New > Notebook 을 클릭하여 새로운 파일 추가

 

리눅스의 쉘과 사용법이 비슷.... ( esc 누른 뒤 m 을 누르면 해당 셀이 파이썬 코드를 작성하는 부분이 아닌 Markdown 용도로 바뀐다 - 설명은 Mardown 으로 바꿔서 작성하였음 ) > pandas 라이브러리를 가져와 pd 이름으로 별칭하고 해당 라이브러리 내장 함수인 read_csv 를 사용하여 1.pandas.csv 파일을 읽어서 출력함

 

특정 자료만 뽑아오는 방법 2가지

 

데이터 프레임 형태로 값을 가져오는 방법 : 대괄호 2개로 묶어서 출력하기

 

데이터 슬라이싱 : 데이터는 0번부터 시작.... 1부터 3번 이전까지의 데이터를 슬라이싱, 처음부터 3번 전까지의 데이터를 슬라이싱, 1번부터 끝번까지 데이터를 슬라이싱

 

loc 함수를 사용하여 1 행부터 3 행까지 가져올건데 name 컬럼의 값만 가져오겠다

 

데이터 프레임 형태로 출력

 

아래와 같이 표현할 수도 있음

 

여러 컬럼의 값도 꺼내올 수 있음

 

모든 행의 name ~ grade 컬럼의 값을 슬라이싱하여 가져오겠다

 

컬럼 명시를 생략하여 모든 컬럼에 대한 값을 가져올 수도 있음

 

grade 의 값이 A 이면 true 출력, 아니면 false 출력..... > 조건식을 넣어서 grade 컬럼의 값이 A 인 데이터만 출력할 수 있다

 

data 를 drop ( drop 을 사용한 값을 다시 자기 자신에게 대입해줘야 적용됨, 실제로 데이터가 삭제된 것은 아니기 때문 )

 

inplace 옵션을 사용해 바로 자기 자신에게 적용시킬 수도 있다

 

axis 를 사용해서 데이터를 drop

 

데이터 여러 방식으로 꺼내와보기

 

컬럼과 값, 자료형 꺼내오기

 

isin() 을 사용하여 데이터 중 특정 값을 포함한 데이터를 출력 > index 를 변경

 

변경한 index 값으로도 값을 출력할 수 있다

 

그냥 저장하게 되면 ipynb 확장자로 저장되는데 이 파일은 Jupyter 를 사용해야 읽을 수 있는 파일이므로 필기같은 내용은 HTML 파일이나 PDF 파일로 변환하여 저장할 수 있다

 

1.pandas 사용법.html
0.34MB

 

내용 정리 파일

 

 

 

 

 

 

 

 

 

 

실습 예제

1.Quiz.pdf
1.11MB

 

1.Quiz-풀이.pdf
1.18MB

 

비밀번호는 댓글

 

 

 

 

 

예제 풀이

example1.html
0.29MB

 

 

 

 

 

 

 

 

 

 

 


 

머신러닝 예시

데이터의 전처리 과정이 필요하나, 현재 생략된 상태

( 전처리 과정을 진행하기 위해 위의 기본 코드들을 학습해야 한다 )

 

Survived : 생존 여부

Pclass : 티켓 클래스 ( 1등석, 2등석, 3등석 )

Sex : 성별

Age : 나이

SibSp : 동반한 형재자매와 배우자의 수

Parch : 동반한 부모, 자식의 수

Fare : 티켓의 요금

표본이 들어있는 csv 파일을 불러온 뒤 컬럼 값을 얻고자 하는 값, 속성(변수) 값으로 나눠서 X 와 y 변수로 저장한다

 

데이터 표본을 나눠주는 sklearn.model_selection 에서 제공하는 train_test_split 을 import 한 뒤에 전체 표본 중 80% 는 머신 러닝에 사용하고 나머지 20% 의 데이터는 러닝된 머신의 테스트 용도로 사용한다 ( 정확성 측정 ) > .shape 를 통해 데이터의 갯수를 확인할 수 있다 > sklearn.ensemble 에서 제공하는 RandomForestClassifier 을 import 한 뒤 r 이라는 변수에 RandomForestClassifier() 를 담아 .fit() 을 사용하여 훈련시킬 알고리즘의 test 값을 넣어준다 > 그 후 테스트용으로 분리시켰던 20% 의 데이터를 .score() 에 담아 예측에 대한 정답률이 어느정도 나오는지 확인한다 > 확인 결과 : 78.7709...%

 

.predict() 를 통해 결과 값을 예측하여 출력하게 만들 수도 있으며 해당 값을 y_test( 살았는지? 죽었는지? ) 와 직접 비교해볼 수도 있다. > 또한 임의의 값을 집어넣어 러닝된 머신에 값을 .predict 로 집어넣어 결과 값을 받아 처리해볼 수도 있다

 


 

728x90

 

 

 

 

 

매핑 어노테이션 종류

어노테이션 설 명
@Column 컬럼 매핑
@Temporal 날짜 타입 매핑
ex) @Temporal(TemporalType.TIMESTAMP)


@Enumerated enum 타입 매핑
ex) @Enumerate(EnumType.STRING)
@LOB BLOB, CLOB 매핑 ( 대형 오브젝트를 의미 )
( String 자료형을 @Lob 어노테이션을 사용해 매핑하면 DB 에는 자동으로 CLOB 으로 매핑된다 )
@Transient 특정 필드를 컬럼과 매핑하고싶지 않은 경우 사용
( 데이터베이스에 저장 X, 조회 X )
주로 메모리상에서만 임시로 어떤 값을 보관하고 싶을 때 사용

 

 

 

 

 

@Column 속성

속성 설명 기본 값
name 필드와 매핑할 테이블 컬럼 이름

ex) @Column(name = "user_id")
객체의 필드 이름
insertable
updateable
등록, 변경 가능 여부

ex) @Column(updatable = false)
TRUE
nullable (DDL) null 값의 허용 여부를 설정
false 로 설정하면 DDL 생성 시에 not null 제약 조건이 붙는다

ex) @Column(nullable = false)
 
unique (DDL) @Table 의 uniqueConstraints 와 같지만 한 컬럼에 간단히 유니크 제약조건을 걸 때 사용

ex) @Column(unique = true)
( 유니크 제약조건의 이름이 랜덤으로 생성되므로 잘 사용하지 않는다 )
 
columnDefinition (DDL) 데이터베이스 컬럼 정보를 직접 줄 수 있다

ex) @Column(columnDefinition = "varchar(100) default 'EMPTY'")
=> varchar(100) 으로 컬럼 생성, 기본 값은 'EMPTY' 로 지정된다
필드의 자바 타입과 방언 정보를 사용
length (DDL) 문자 길이 제약조건, String 타입에만 사용한다

ex) @Column(length = 10)
=> varchar(10) 으로 컬럼이 생성된다
255
precision,
scale (DDL)
BigDecimal 타입에서 사용한다 ( BigInteger 도 사용 가능 )  

 

 

 

 

 

@Enumerated 속성

※ 주의 ! ORDINAL 은 사용 X ( 기본 값이기 때문에 변경해서 사용!!! ) ※

속성 설명 기본 값
value • EnumType.ORDINAL : enum 순서를 데이터베이스에 저장

• EnumType.STRING : enum 이름을 데이터베이스에 저장

ex) @Enumerated(EnumType.STRING)
EnumType.ORDINAL

 

 

 

 

 

@Temporal 속성

JAVA 에서 자료형을 LocalDate, LocalDateTime 을 사용하는 경우는 자동으로 매핑해준다

즉, 속성 생략이 가능 ( 최신 하이버네이트 지원 )

LocalDate : DB 의 DATE 와 매핑

LocalDateTime : DB 의 TIMESTAP 와 매핑

속성 설명 기본 값
value TemporalType.DATE : 날짜, 데이터베이스의 date 타입과 매핑
( 예 : 2024-05-20 )

TemporalType.TIME : 시간, 데이터베이스 time 타입과 매핑
( 예 : 10:57:23 )

TemporalType.TIMESTAMP : 날짜와 시간, 데이터베이스 timestamp 타입과 매핑
( 예 : 2024-05-20 10:57:23 )
 

 

 

728x90

+ Recent posts