JAVA/자바 2019. 11. 6. 14:42

팀원들이랑 기존의 파리바게뜨 홈페이지를 MV2패턴으로 재설계해보았습니다.

 

미니 프로젝트1 - JSP를 이용하여 MVC2 패턴으로 홈페이지 재구성

제작 날짜 : 7월 1일 ~ 7월 8일

주제 선정 : 파리바게뜨 홈페이지 재구성해보기

 

주제 선정 이유

- 자바를 배운 지 별로 안되었을 때, 이것저것 해보고 싶어서 다양한 게시판이 있는 홈페이지를 골랐습니다.

 

프로젝트 명 : MVC2 파리바게뜨 홈페이지

 

문제점 : 팀원 모두 코딩을 배운 지 1개월도 안되었을 때라 역할분담이 제대로 나눠지지 않았습니다.

해결방법 : 시간을 갈아넣기..... (이 프로젝트 기간동안 새벽 2시 전에 집에 가본 적이 없었습니다.)

 

맡았던 역할

- 관리자 페이지(제품)

   - 제품 제거

   - 제품 추가

   - 제품 검색

   - 제품 분류

- 마이페이지 중 일부

   - 회원 탈퇴

 

시연 영상

https://youtu.be/GmAzvs6g3ns

 

posted by 스노(Snow)
:
R 프로그래밍 2019. 11. 6. 13:42

네이버나 다음 등의 포털사이트에서 2019년 자동차 데이터를 수집하였습니다.

네이버 자동차 데이터 (https://auto.naver.com/car/lineup.nhn?yearsId=130559)

 

변수로는 모델, 가격, 연비(도시),연비(고속도로), 연료타입[가솔린, 디젤, 하이브리드], 제조사, 모델[세단,SUV], 차종, 국산/수입, 마력, 차중량을 사용하였습니다.

 

데이터는 총 303개 모았습니다.

 

수치형 변수들의 산점도

수치형 변수들의 상관계수

자동차 타입별 레이더 차트

비지도학습으로 군집을 6개로 나눈 그래프  (K-means 클러스터링)

Hierarchical 클러스터링(계층화) 결과, 그려진 모양에 맞춰서 빨간색으로 클러스터를 표현했습니다. 분류 시 2개 혹은 3개로 분류하는 것이 좋아보입니다.

 

R 코드와 데이터는 (https://github.com/sealwh/cars)에서 다운받으실 수 있습니다.

posted by 스노(Snow)
:
기타/개발자노트 2019. 11. 6. 11:41

7월 1일부터 8월 31일까지 있었던 2019 창원 빅데이터 공모전에 참가하였었습니다.

(http://bigdata.changwon.go.kr/portal/board/notice/view.do?idx=1)

공모 주제는 개방된 데이터를 활용하여 창원시의 생활불편 해결 및 공공 이익 발전에 기여할 수 있는 자유주제였습니다.

저희 팀은 주제로 창원시 범죄분석을 통한 안전한 도시 만들기를 하였습니다.

 

제가 맡았던 역할은 CCTV와 보안등, 범죄등의 분석을 통하여 CCTV, 보안등, 셉테드(범죄예방 환경설계)의 추가 설치지역선정 입니다.

 

아쉽게도 수상은 하지 못 하였지만, 공공데이터 수집 및 가공하는 방법과 팀원들과 역할분담을 하여 효율적으로 작업하는 방법을 익힐 수 있어서 좋은 경험이었습니다. 그 공모전으로 인해 좀 더 데이터 공부를 열심히 해야겠다는 동기부여를 할 수 있게 되었습니다.

posted by 스노(Snow)
:
R 프로그래밍 2019. 11. 6. 11:05

R을 이용하여 Diamond의 데이터로 기하학적 객체들(점, 선, 막대 등)에 미적 특성(색상, 모양, 크기)를 매핑하여 시각적으로 분석합니다.

 

ggplot2

ggplot2는 다음과 같은 다섯 가지 사항으로 그림을 그립니다.

 

data

- 그래프를 그리려는 데이터로 구조는 데이터 프레임이고 데이터의 기록 방식은 long-farmat에 기반한 tidy data여야 합니다.

(aesthetic) Mapping

- 데이터의 요소와 그래프의 요소를 대응시키는 과정으로 그리고싶은 그래프가 필수적으로 요구하는 대응 요소를 만족시키면 됩니다. 하나의 변수가 여러가지 시각적 요소에 대응할 수 있습니다.

geometric object

- 어떤 형태의 그래프를 그릴지 지정해야 합니다. ggplot2에서는 이것을 geometric object라고 하며, 줄여서 geom이라고 합니다.

position

- 그래프의 형태를 지정했다면 그래프에서 각 도형이 어떤 식으로 배치될 지를 결정할 수 있습니다. 이러한 옵션을 position이라고 합니다. 막대그래프나 선 그래프라면 누적 그래프를 그리거나 할 때 position 옵션을 조정해 형태를 변경할 수 있습니다.

statistical transformation

- 값이 어떻게 그래프에 반영되는지 결정하는 옵션입니다. 줄여서 stat 이라고 합니다. 히스토그램과 같이 구간 내에 존재하는 값의 개수를 세거나 밀도를 계산하는 등, 주어진 값을 변형시켜서 그래프에 반영시킬 때 사용합니다.

 

자료 시각화의 핵심

plot = data + aesthetics + geometry

 

data : 무엇을 시각화할 것인가?

geom : 무엇으로 시각화할 것인가? 예)점, 선, 막대 등

aesthetics : 어떤 시각적 특성(visual attributes)를 사용할 것인가? 예) 위치(x,y), 크기(size), 모양(shape), 색깔(col) 등

 

ggplot2 기본 문법

1. 축을 그립니다.  (x축,y축을 정해줍니다.)

ggplot(데이터명, aes(x=변수1,y=변수2))

 

2. 그래프를 그립니다.

geom_bar()            막대 도표를 그립니다.

geom_histogram()   히스토그램을 그립니다.

geom_boxplot()      박스 플롯을 그립니다.

geom_line()            선 그래프를 그립니다.

geom_point()         포인트 그래프를 그립니다.

geom_smooth()      추세선을 그립니다.

geom_violin()         바이올린 박스 플롯을 그립니다.

 

3. 기타 옵션을 수정하여, 그래프를 정교화 합니다.

labs()               범례 제목 수정

ggtitle()            제목 수정

xlabs(), vlabs()    x축,y축 이름 수정

 

diamonds

우선은 ggplot2부터 인스톨 하겠습니다.

 

install.packages("ggplot2")

library(ggplot2)

 

저희가 활용할 객체는 ggplot의 diamonds입니다.

View를 활용하여 정보를 얻을 수 있습니다.

 

View(diamonds)

 

질적자료인지 양적 자료인지 헷갈리시면 str을 이용해 편하게 구분 하실 수 있습니다.

 

str(diamonds)

 

diamonds의 자료구성입니다.

질적자료는 숫자로 표시될 수 없는 자료를 가르킴으로 factor형인 cut, clarity, color가 있습니다.

 

어떤 데이터를 사용할 것인지 지정하시려면 다음과 같이 작성하시면 됩니다.

g <- ggplot(data=diamonds, aes(x=cut))

 

그 후 변수에 데이터를 넣은 후 출력형식을 +로 연결해주시면 됩니다.

g + geom_bar()

 

위에 것을 실행하시면 cut의 막대그래프가 나올 것입니다.

질적 변수인 cut을 기준으로 도수의 크기를 비교한 막대그래프입니다.

 

 

양적자료인 carat은 막대그래프가 아닌 히스토그램을 사용하시면 됩니다.

 

g <- ggplot(data=diamonds, aes(x=carat))

g + geom_histogram(binwidth = 1 )
g + geom_histogram(binwidth = 0.1 ) 

 

히스토그램의 계급수를 변경하는 등 작성자의 주관적인 판단에 해석이 좌우 될 수 있습니다.

 

다음은 line을 실습해 보겠습니다.

x축은 carat, y축은 price로 line을 만들어 보겠습니다.

g <- ggplot(data=diamonds, aes(x=carat,y=price))
g+geom_line()

그래프가 변동이 변동이 심하고 알아보기도 힘든 것을 확인하실 수 있습니다.

한번 color 변수를 넣어보겠습니다.

 

g+geom_line(aes(colour=color))

 

carat의 크기와 색에 따라서 가격이 상승된다는 것을 알 수 있습니다.

 

이번에는 포인트 그래프를 만들어 보겠습니다. 변수로는 carat과 price, clarity를 비교해보겠습니다.

 

ggplot(data=diamonds, aes(x=carat,y=price, colour=clarity)) + 
    geom_point()

그래프를 보시면 노란색 점이 위쪽으로 많이 분포되어있고, 검은색 점이 아래쪽에 많이 분포되어있음을

알 수 있습니다. 간단하게 해석해보면 다이아몬드에 결점이 적을수록 가격이 높으며, 무게가 큰 것은 찾기

힘들다는 것을 알 수 있습니다.

 

이번에는 위에 있는 포인트그래프에 추세선을 그려보겠습니다.

 

ggplot(data=diamonds, aes(x=carat,y=price, colour=clarity)) + 
     geom_point() +
     geom_smooth()

위에 있었던 포인트나 라인그래프같이 무수한 데이터들로 이루어진 산포도로는 그 경향을 정확히 읽어내기가 어렵습니다. 이런 경우, 추세선을 통하여 그 경향을 좀 더 편하게 읽을 수 있습니다.

posted by 스노(Snow)
:
R 프로그래밍 2019. 11. 6. 09:56

유튜브와 관련된 논문들을 조사하여 유튜브 이용자의 만족도에 어떠한 요인들이 영향을 미치는지 조사하였습니다.

그렇게 얻어진 요인들을 가지고 설문지를 작성한 후 조사하였습니다.

 

목적

설문조사 후 분석하는 학과 과제를 위해 시작하였으며, 이왕이면 사람들이 많이 이용하는 것을 주제로 하고 싶었습니다.

 

가설

1. 유튜브 미디어 특성 인식은 이용자의 몰입(즐거움/주의집중/시간왜곡) 수준에 영향을 미칠 것이다.

 - 1 : 유튜브의 상호작용 특성 인식은 이용자의 몰입 수준에 영향을 미칠 것이다.

 - 2 : 유튜브의 즉시연결성 특성 인식은 이용자의 몰입 수준에 영향을 미칠 것이다.

 - 3 : 유튜브의 이용편리성 특성 인식은 이용자의 몰입 수준에 영향을 미칠 것이다.

2. 유튜브 콘텐츠 특성 인식은 이용자의 몰입 수준에 영향을 미칠 것이다.

 - 1 : 유튜브 콘텐츠 인식의 다양성은 이용자의 몰입 수준에 영향을 미칠 것이다.

 - 2 : 유튜브 콘텐츠 인식의 오락성은 이용자의 몰입 수준에 영향을 미칠 것이다.

 - 3 : 유튜브 콘텐츠 인식의 신뢰성은 이용자의 몰입 수준에 영향을 미칠 것이다.

3. 유튜브 콘텐츠 추천 서비스에 대한 특성 인식은 이용자의 몰입 수준에 영향을 미칠 것이다.

 - 1 : 유튜브 콘텐츠 추천 서비스의 정확성은 이용자의 몰입 수준에 영향을 미칠 것이다.

 - 2 : 유튜브 콘텐츠 추천 서비스의 새로움은 이용자의 몰입 수준에 영향을 미칠 것이다.

설문 응답자 특성

설문에 참여한 응답자들은 남성은 49명, 여성은 28명이었습니다.

 

연구 가설을 분석하기에 앞서 연구에서 사용한 측정 척도의 신뢰도를 살펴보기 위해 크론바흐 알파값을 검증하였습니다. 다음의 표와 같이 신뢰도 계수가 .60이상으로 나타나 분석을 위한 기준치에 적합한 것으로 판단되었습니다.

 

 

몰입의 하위차원 중 즐거움에 영향을 미치는 요인을 확인했습니다. 그 결과 콘텐츠 특성과 새로운 추천 서비스가 즐저움에 유의미한 영향을 미치는 것으로 확인되었으며, 그 중에서도 오락성이 가장 큰 영향을 미치는 변인으로 드러났습니다. 해당 회귀분석의 수정된 R제곱 값은 0.5831로 만족할만한 설명력을 가지고 있다고 판단되었습니다.

몰입의 하위차원 중 주의집중에 영향을 미치는 요인을 확인하였습니다. 그 결과 콘텐츠의 특성과 개인성향의 감각추구성향이 유의미한 영향을 끼친다는 것을 확인하였습니다. 해당 회귀분석은 수정된 R제곱 값은 0.3726으로 만족할만한 설명력을 가지고 있다고 판단하였습니다.

몰입의 하위차원 중 시간왜곡에 영향을 미치는 요인을 확인했습니다. 그 결과 개인성향의 감각추구성향이 유의미한 영향을 끼치는 것으로 확인하였으며, 해당 회귀분석의 수정된 R제곱 값이 0.3326으로 만족할만한 설명력을 가지고 있다고 판단하였습니다.

몰입의 세 가지 하위 차원이 이용자 만족에 미치는 영향을 회귀분석을 통하여 검증하였습니다.

그 결과 즐거움이 이용자 만족에 유의미한 영향을 미치고 있음을 확인했습니다.

반면에 주의집중과 시간왜곡은 만족에 직접적인 영향을 미치지 못하는 것으로 나타났습니다.

만족도에 영향을 가장 많이 끼치는 오락성의 점수와 시간과 비교해본 결과, '거의 그렇지 않다'가 평균 20분, '보통이다'가 평균 63분, '그렇다'가 평균 93분, '자주 그렇다'가 평균 125분, '매우 그렇다'가 평균 148분으로, 오락성이 높을수록 유튜브를 더 오래본다는 조사결과를 얻을 수 있었습니다.

 

 

 

 

 

참고 문헌 :

https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE07588565&language=ko_KR

 

유튜브 이용자의 몰입경험과 만족에 영향을 미치는 요인 연구

본 논문은 최근 급성장하고 있는 온라인 영상 서비스의 인지된 특성이 이용자의 긍정적인 몰입 경험과 만족도에 어떠한 영향을 미치는 지 알아보고자한다. 연구를 위해 평소 유튜브를 이용하는 20-30대 응답자 289명을 대상으로 설문을 실시하였고, 이후 위계적 회귀분석을 사용해 변인 간 관계를 분석하였다. 그 결과 유튜브의 상호작용 특성과 추천 서비스의 새로움,

www.dbpia.co.kr

이강유, 성동규. (2018). 유튜브 이용자의 몰입경험과 만족에 영향을 미치는 요인 연구. 한국콘텐츠학회논문지, 18(12), 660-675.

posted by 스노(Snow)
:
기타/개발자노트 2019. 10. 30. 13:55

K리그 축구 승부 예측 프로그램 제작 프로젝트 진행중입니다.

 

인원 : 3人

 

글쓴이가 맡은 역할

- 조장

- 모델 제작

- MySQL(모델부분)

 

다른 사람들이 맡은 역할

- 서버(1人)

- 웹

- MySQL(회원, 게시판 등)

 

 

완성된 부분

 

- 결측값(2019년 PA내 유효슈팅) 복원 (https://sno-machinelearning.tistory.com/51)

 

[개발자 노트] 2019/10/19 결측값을 복원하기

프로젝트를 진행중입니다. 주제는 축구 승부 예측 프로그램을 만들어 웹페이지에 구현하려고 합니다. 데이터는 K리그의 데이터를 가지고 하였습니다. 데이터 수집 사이트(K리그 데이터포털 및 네이버 K리그1 정보)..

sno-machinelearning.tistory.com

- K리그 축구 예측 프로그램 (발표 후 공개하겠습니다)

 

- 서버에서 모델과 웹(Spring) 연동 (공개는 조원들과 의논 후 결정하겠습니다)

 

- 회원가입, 게시판 부분 (Spring 역할을 맡은 조원의 블로그에서 확인해주세요.  https://youbidan.tistory.com/)

 

해야하는 것

적중률 올리기 (현재 60%정도) - 승과 패는 그럭저럭 잘 맞추는데 무승부는 잘 못 맞추네요.

 

골 수 맞추기 (현재 약 40% 정도)  - 홈도 그렇지만 특히 어웨이는 못 맞추는 경우가 너무 많네요. 현재 서수 로지스틱 회귀를 이용하여 모델을 만들었지만 좀 더 고민을 해봐야겠습니다.

 

 

posted by 스노(Snow)
:
기타/개발자노트 2019. 10. 19. 17:19

프로젝트를 진행중입니다.

 

주제는 축구 승부 예측 프로그램을 만들어 웹페이지에 구현하려고 합니다.

 

데이터는 K리그의 데이터를 가지고 하였습니다.

데이터 수집 사이트(K리그 데이터포털 및 네이버 K리그1 정보)

 

오늘 한 것

- 2019년의 PA내 유효슈팅 값 구하기

 

2019년의 PA내 유효슈팅은 찾을 수가 없었습니다.

그렇기에 2016년부터 2018년까지의 데이터들을 이용하여 PA내 유효슈팅을 예측해야 했습니다.

 

HOME에서의 PA내 유효슈팅과 상관이 있는 변수를 선택하기 위해서 후진제거법을 사용하였습니다.

선택된 변수들을 이용하여 선형회귀식을 만들었으며, 얻어낸 모델을 바탕으로 2019년 PA내 유효슈팅을 예측할 수 있었습니다.

 

posted by 스노(Snow)
:
JSP 2019. 10. 11. 22:27

[ GET ]

<figure class="imageblock alignLeft" style="margin: 0px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; font-family: "Noto Sans KR", sans-serif; font-size: 16px;">

</figure>

get에서는 Project Explorer에서 Servers->Tomcat v9.0 Server at localhost-config->server.xml 을 엽니다.

<figure class="imageblock floatLeft" style="margin: 0px 20px 0px 0px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; float: left; font-family: "Noto Sans KR", sans-serif; font-size: 16px;">

</figure>

 

자신 서버에 맞는 포트번호를 찾아서 URLEncoding="UTF-8" 를 추가 시킵니다.

 

[자신 서버에 맞는 포트번호 찾는 방법]

<figure class="imageblock alignLeft" style="margin: 0px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; font-family: "Noto Sans KR", sans-serif; font-size: 16px;">

</figure>

 

하단의 Servers에 있는 localhost를 좌클릭 두번하여 나오는 창에서 확인하실 수 있습니다.

<figure class="imageblock alignCenter" style="margin: 0px auto 20px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; text-align: center; font-family: "Noto Sans KR", sans-serif; font-size: 16px;">

</figure>

[ POST ]

post에는 JSP에 밑 코드를 추가하면 됩니다.

<% request.setCharacterEncoding("UTF-8"); %>

위 코드는 UTF-8를 인코딩하겠다는 의미입니다.

'JSP' 카테고리의 다른 글

GET과 POST  (0) 2019.10.11
[JSP] 쿠키와 세션  (0) 2019.06.20
[JSP] 영역(Scope)에 대한 정리  (0) 2019.06.20
[JSP] GET / POST 한글 깨짐 처리 방법  (0) 2019.06.20
Get방식과 Post방식  (0) 2019.06.19
posted by 스노(Snow)
: