데이터베이스2020. 11. 23. 01:33
728x90

이전 글에서 만들었던 cafein 데이터베이스의 member 테이블에

레코드를 넣어보겠습니다.

 

아래 표에서 세로방향 (멤버1, 2, 3..)이 레코드라고 이해하시면 됩니다!

레코드\필드 num email pw name
  1 minn@email.com 1234 min
  2 ald@email.com a12b3 aldzl
  3 june66@email.com 456qwe! gildong
  ...      

 

 

* 레코드 삽입

insert into 테이블명 (필드명1, 필드명2, ...) values (필드1값, 필드2값, ...);

 

num = 1,

email = 'minn@email.com',

name = 'min' 을 입력했습니다.

 

 

* 레코드 조회(모든 필드)

select * from 테이블명;

 

잘 들어간 것을 확인 할 수 있습니다!

 

만약 num, email 필드만 확인하고 싶다면  다음과 같이 입력하면 됩니다.

[ select num, email from 테이블명; ]

 

 

 

반응형
Posted by mminky
데이터베이스2020. 11. 22. 05:05
728x90

※ 우선 mySQL을 다운 받습니다.

 

* MySQL 로그인

 

cmd창

다음의 명령어로 MySQL Workbench 8.0 CE 디렉토리로 이동합니다.

 

cd C:\Program Files\MySQL\MySQL Workbench 8.0 CE

 

저는 root 계정으로 로그인을 할 것이라서 다음과 같이 명령어를 입력했습니다.

mysql -u root -p

 

비밀번호 입력까지 성공하면

mysql> 이라고 나타납니다.

 

 

* 데이터베이스 생성

 

create database 데이터베이스명;

 

 

* 데이터베이스 확인

 

show databases;

 

위에서 생성했던 cafeIn이라는 데이터 베이스가 생성된 것을 확인 할 수 있습니다.

 

 

* 데이터베이스에 테이블 만들기

 

저는 다음과 같이 num, email, pw, name 네 개의 필드로 구성된 테이블을 생성하려고 합니다.

필드명 타입 비고
num int 회원번호
email char(30) 이메일 주소
pw char(20) 비밀번호
name char(80) 성명

char(30)이란 30 byte를 허용한다는 의미 입니다.

 

 

먼저 이용할 데이터베이스에 접속합니다.

use 데이터베이스명

 

 

 

다음의 명령어로 테이블을 생성합니다.

( -> 는 엔터를 치면 자동으로 입력됩니다. )

create table 테이블명(
-> 필드명 타입,
-> 필드명 타입,
...
-> primary key(필드명)
-> );

 

 

member라는 테이블을 생성했습니다.

 

num 필드는 회원번호이기 때문에 null이면 안 됩니다. [num int not null]

( 아이디로 이용할 email, 비밀번호 pw도 마찬가지)

 

그리고 primary key로 num을 지정해줬습니다. [primary key(num)]

primary key는 필수는 아니지만 테이블을 관리하는 기본 키 입니다. (회원1, 회원2 ..)

 

 

* 데이터베이스의 테이블 확인

 

desc 테이블명;

 

member 테이블이 num, email, pw, name 4개의 필드로 구성된 것을 확인 할 수 있습니다.

그리고 num이 primary key로 설정된 것도 확인할 수 있습니다.

반응형
Posted by mminky
데이터베이스2020. 11. 21. 19:47
728x90

콘솔에서 삭제하고자 하는 프로젝트 선택

-> 설정(톱니바퀴)

-> 프로젝트 설정

 

스크롤을 내려 하단의

프로젝트 삭제 클릭

 

 

동의 후 프로젝트 삭제 클릭

반응형
Posted by mminky
파이썬2020. 11. 18. 12:33
728x90

파이썬을 하다보면 다음의 코드를 이용합니다.

 

특히 wines = pd.read_csv('wine_dataset.csv') 는 정말 많이 이용하죠

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import preprocessing

 

numpy, pandas, seaborn파이썬에서 필요한 라이브러리 입니다.

 

* numpy : 대규모 다차원 배열, 행렬연산에 필요한 라이브러리 (필수)

* pandas : 데이터 처리, 분석 라이브러리

* seaborn : 데이터 시각화 담당 라이브러리

 

 

import pandas as pd
data = pd.read_csv('dataset.csv')

위 코드는 pandas라이브러리를 pd라는 약자로 import하겠다는 의미입니다.

pd.read_csv는 pandas.read_csv와 같은 의미입니다.

 

 

반응형
Posted by mminky
파이썬2020. 11. 14. 20:30
728x90

* 출처 : https://github.com/lsi8546/Wine



numpy, pandas, seaborn,

mat plot lib을 import합니다.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import preprocessing
%matplotlib inline

# csv 파일을 wines에 읽어옴
wines = pd.read_csv('wine_dataset.csv')
wines

 

 

 

파일을 읽어온 wines의 style 칼럼의

value를 count 합니다.

normalize=True를 통해 그 값을 0~1 사이의 수치로 표현합니다.

 

data = wines["style"].value_counts(normalize=True)
data

 

 

white wine이 75%,

red wine이 25%로 구성되어 있다는 것을 알 수 있습니다.

 

 

scaling을 했더니 정확한 값이 나오지 않아서  (혹시 이유 아시는 분 댓글 부탁드립니다!)

그냥 wines_scale에 wines를 copy했습니다.

#Scaling the continuos variables
wines_scale = wines.copy()
# scaler = preprocessing.StandardScaler()
# columns = wines.columns[0:12]
# wines_scale[columns] = scaler.fit_transform(wines_scale[columns])
# wines_scale.head()

 

파일의 'style' 칼럼만 읽어옵니다

# label_encoder = preprocessing.LabelEncoder()
le = wines_scale['style']
print(le)

 

 

 

33%를 테스트 코드로 이용합니다.

(자료가 많아서 67%로 학습)

 

X : style 칼럼을 제외한 항목들

y : style 칼럼의 항목들

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test=train_test_split(wines_scale.iloc[:,0:12], le, test_size=0.33, random_state=8)
#[0:12]는 0~11

 

X와 y를 출력해보겠습니다

print(X_train.shape)
print(X_test.shape)
print(y_train.shape)
print(y_test.shape)

 

 

X_train : X_test = 4352 : 2145 가 거의 67:33

y_train : y_test 도 거의 67:33 인 것을 알 수 있습니다.

 

 

세 가지 모델을 이용했습니다.

* DecisionTreeClassifier

* RandomForestClassifier

* LogisticRegression

from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# 결정트리, Random Forest, 로지스틱 회귀를 위한 사이킷런 Classifier 클래스 생성
dt_clf = DecisionTreeClassifier(random_state=11)
rf_clf = RandomForestClassifier(random_state=11)
lr_clf = LogisticRegression()

# DecisionTreeClassifier 학습/예측/평가
dt_clf.fit(X_train , y_train)
dt_pred = dt_clf.predict(X_test)
print('DecisionTreeClassifier 정확도: {0:.4f}'.format(accuracy_score(y_test, dt_pred)))

# RandomForestClassifier 학습/예측/평가
rf_clf.fit(X_train , y_train)
rf_pred = rf_clf.predict(X_test)
print('RandomForestClassifier 정확도:{0:.4f}'.format(accuracy_score(y_test, rf_pred)))

# LogisticRegression 학습/예측/평가
lr_clf.fit(X_train , y_train)
lr_pred = lr_clf.predict(X_test)
print('LogisticRegression 정확도: {0:.4f}'.format(accuracy_score(y_test, lr_pred)))

 

 

모델별로 정확도가 아주 높게 나오는 것을 알 수 있습니다.

 

 

[임의의 값으로 테스트]

 

기존 데이터 베이스에 없는 임의의 red wine 값을 넣었습니다.

my_wine = [[7.9,0.6,0.06,1.6,0.069,15,59,0.9964,3.3,0.46,9.4,5]]

 

예측한 값을 my_pred에 넣습니다. (rf_clf 모델이용)

my_pred = rf_clf.predict(my_wine)
my_pred

 

 

결과가 red로 잘 나오는 것을 확인할 수 있습니다 :)

 

 

* 이용 데이터

 

wine_dataset.csv
0.37MB

 

 

* 추가 테스트 해보고 싶을때

 

winequality-red.csv
0.08MB
winequality-white.csv
0.25MB

 

반응형
Posted by mminky
파이썬2020. 11. 14. 12:21
728x90

pip를 이용해서 쉽게 설치가 가능합니다

 

numpy 설치

pip install numpy

 

pandas 설치

pip install pandas

 

반응형
Posted by mminky
(web) 스프링2020. 11. 12. 15:37
728x90

※ spring - gradle 프로젝트

 

 

* 우선 파이어베이스에서 console을 하나 만듭니다.

 

* gradle 프로젝트이므로

build.gradle에 파이어베이스의 dependencies를 추가해 줍니다.  (버전확인 <-링크 클릭해서 확인하세요)

implementation 'com.google.firebase:firebase-admin:6.8.1'

 

build.gradle에 firebase dependency 추가한 모습

 

 

* Firebase Admin SDK 추가

콘솔에서 원하는 프로젝트 - 설정 -프로젝트 설정 - 서비스 계정 - 자바 - 새 비공개 키 생성

 

키 생성 클릭하면 json 파일 하나가 다운로드 됩니다.

다운받은 .json파일

 

다운받은 파일을 드래그&드랍으로 프로젝트의 resources 디렉토리 안에 넣어줍니다.

 

* 스프링 프로젝트의 application.properties에 다음의 문장을 입력합니다

firebase-realtime-database.database-url=파이어베이스 주소

 

파이어베이스 주소는 빨간색 밑줄로 표시되어 있는 것 입니다.

그리고 좌측의 버튼으로 복사가 가능합니다.

파이어베이스 주소

 

붙여넣은 모습

 

 


spring과 파이어베이스 realtime 데이터베이스를 연결하려고 했습니다.

결국 성공하지 못해서 코드를 남깁니다..ㅠ

 

 

Service/FirebaseInitialize.java

package DSC4.cafein.service;

import com.google.auth.oauth2.GoogleCredentials;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import java.io.FileInputStream;

@Service
public class FirebaseInitialize {

    @PostConstruct //has to be Run during the Start of
    public void initialize() {
        try {
            FileInputStream serviceAccount =
                    new FileInputStream("./src/main/resources/serviceAccountKey.json");

            FirebaseOptions options = new FirebaseOptions.Builder()
                    .setCredentials(GoogleCredentials.fromStream(serviceAccount))
                    .setDatabaseUrl("https://cafein-d8792.firebaseio.com")
                    .build();

            FirebaseApp.initializeApp(options);
        } catch (Exception e){
            e.printStackTrace();
        }
    }
}

 

 

Service/FirebaseService.java

package DSC4.cafein.service;

import DSC4.cafein.domain.Member;
import com.google.firebase.database.*;
import org.springframework.stereotype.Service;


@Service
public class FirebaseService {
    private FirebaseDatabase database;
    private DatabaseReference databaseReference;

    public String getUserDetails(Member member) {
        database = FirebaseDatabase.getInstance();
        databaseReference = database.getReference("member").child("spring1");


        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
            //    Iterable<DataSnapshot> values = dataSnapshot.getValue(Member.class);
                Member member;
                member. = dataSnapshot.child("name").getValue();
             //   member = values.toString(Member.class);
              //  return member;
            }

            @Override
            public void onCancelled(DatabaseError error) {

            }
        });
//        ApiFuture<DataSnapshot> future = databaseReference.get();
//
//        DataSnapshot snapshot = future.get();
//        Member member = null;
//
//        if(snapshot.exists()){
//            member = snapshot.toObject(Member.class);
//            return member;
//        }
//        else{
//            return null;
//        }


//        mFirebaseDataBaseReference = FirebaseDatabase.getInstance().getReference();
//        mFirebaseDataBaseReference.child("user").child("ID").setValue("test",);

    }
}

 

 

반응형
Posted by mminky
728x90

* 분리배출 잔재 폐기물 봉투
간혹 아파트에서 다음의 봉투를 발견하신 적이 있으실 겁니다!
이 봉투는 자원관리도우미분들이 설치 하셨을 거에요!



여기에는 재활용이 되지 않는 일반쓰레기를 버려주시면 됩니다!


예를 들어

박스에 붙어있는 테이프, 음식물이 묻은 봉지,
덜씻긴 컵라면통, 과일망,
보온보냉백, 아이스팩 등을넣어주시면 됩니다 :)

잔재 폐기물 봉투에 버리는 폐기물 예시

 

더 많은 폐기물 종류는 다음 링크의 노란 종이를 참고해주세요!

mminky.tistory.com/68

 

[keco 자원관리 도우미] Day 1 & 2

이제 본격적으로 일을 시작했습니다! 첫째날과 둘째날은 아파트 현황조사를 했습니다! 첫째날은 1,2번 아파트 둘째날은 3번 아파트를 방문했습니다! 각 관리사무소에 방문하여 다음의 서식을 작

mminky.tistory.com

 

 

+) 히히 담당자분이 주셨어요😀
감사합니다!!

 

 

※ 제 글이 도움이 되었다면 공감 부탁드려요 ◡̈

반응형
Posted by mminky