[§8-4.6] Asian Lunar New Year Commemoration Week. The one week period following the day of the Chinese New Year shall be known and designated as the "Asian Lunar New Year Week of Commemoration in Hawaii". This week is not and shall not be construed as a state holiday. [L 2007, c 48, §2]


--- layout: page title: Tutorials permalink: /tutorials/ ---
The following tutorials are available to give you a place to start. It is up to you to expand on them. Enjoy!


All Packages Class Hierarchy This Package Previous Next Index
Class com.jclark.xml.parse.OpenEntity
java.lang.Object
|
+----com.jclark.xml.parse.OpenEntity
- public class OpenEntity
- extends Object
Information about an open external entity.
This is used to by EntityManager
to return
information about an external entity that is has opened.
- See Also:
- EntityManager
-
OpenEntity(InputStream, String, URL)
- Creates and initializes an
OpenEntity
which uses
the encoding specified in the entity.
-
OpenEntity(InputStream, String, URL, String)
- Creates and initializes an
OpenEntity
which uses
an externally specified encoding.
-
getBase()
- Returns the URL to use as the base URL for resolving relative URLs
contained in the entity.
-
getEncoding()
- Returns the name of the encoding to be used to convert the entity's
bytes into characters, or null if this should be determined from
the entity itself using XML's rules.
-
getInputStream()
- Returns an InputStream containing the entity's bytes.
-
getLocation()
- Returns a string representation of the location of the entity
suitable for use in error messages.
OpenEntity
public OpenEntity(InputStream inputStream,
String location,
URL base,
String encoding)
- Creates and initializes an
OpenEntity
which uses
an externally specified encoding.
OpenEntity
public OpenEntity(InputStream inputStream,
String location,
URL base)
- Creates and initializes an
OpenEntity
which uses
the encoding specified in the entity.
getInputStream
public final InputStream getInputStream()
- Returns an InputStream containing the entity's bytes.
If this is called more than once on the same
OpenEntity, it will return the same InputStream.
getEncoding
public final String getEncoding()
- Returns the name of the encoding to be used to convert the entity's
bytes into characters, or null if this should be determined from
the entity itself using XML's rules.
getBase
public final URL getBase()
- Returns the URL to use as the base URL for resolving relative URLs
contained in the entity.
getLocation
public final String getLocation()
- Returns a string representation of the location of the entity
suitable for use in error messages.
All Packages Class Hierarchy This Package Previous Next Index


HOME
ABOUT
SHOP
Accesories
Books
Hiking
Photography
0
Ready for the Road?
shop now
Our Featured Picks
EXPLORE MORE
Explore the World
Manarola
Italy
READ MORE
Phi Phi Islands
Thailand
READ MORE
Hindu Temple Ulun Danu Bratan
Indonesia
READ MORE
Moraine Lake
Canada
READ MORE
Uyuni Salt Flats
Bolivia
READ MORE
Cenote Suytun
Mexico
READ MORE
Machu Picchu
Peru
READ MORE
Perito Moreno Glacier
Argentina
READ MORE
Stay Adventurous!
My Cart
proceed to purchase
Shop
Accesories
Books
Hiking
Photography
Gift Cards
About
Our Story
Blog
Careers
iOS App
Android App
Help
FAQs
Contact Us
Product Guides
Customer Support
Sign up for our newsletter


Full description
qald-5.pdf
(Last updated: June 7, 2015)
Results
qald-5_results.pdf
Task
Given a natural language question or keywords, retrieve the correct answer(s) from a repository containing both RDF data and free text.
Training questions
qald-5_train.xml
Test questions
qald-5_test_questions.xml
qald-5_test.xml
Preliminary schedule
| Release of training dataset and instructions: |
January 30, 2015 |
| Release of test dataset: |
April 20, 2015 |
| Submission deadline: |
May 8, 2015 |
| Release of evaluation results: |
May 15, 2015 |
| Deadline for working notes submission: |
May 31, 2015 |
| Workshop: | September, 2015 |
Prizes
We're happy to be able to offer prizes for the top-scoring teams, both for the multilingual and the hybrid track:
- 200 EUR for the best system in the multilingual track
- 100 EUR for the best system in the multilingual track that worked on another language than English
- 200 EUR for the best system in the hybrid track


31 July 2018
FIZZBUZZ is an exercise found in Chapter 2: Programme Structure of Eloquent Javascript. The exercise asked that I create a program that uses console.log to print numbers from 1 to 100. However, if the number was divisible by 3, print “Fizz” instead of the number, and if the number was divisible by 5, print “Buzz” instead and finally, if the number was divisible by both 3 and 5, the word “FizzBuzz” should be printed.
One of the problems was that the code that I had written was logging all numbers 1 to 100 including the Fizz, Buzz and FizzBuzz, instead of replacing the relevant numbers with the text.
The issue I encountered was resolved by stepping through the control flow. I was printing 1 to 100 first and then executing the other conditions to print text afterwards.
I solved the issue by asking myself what was happening step by step throughout the code I had written and writing out what I needed to happen. I was telling the console to print 1 to 100 first and then adding the conditions afterwards so that by the time it got to the Fizz, Buzz and FizzBuzz conditions, it had already printed 1 to 100 anyway.
By breaking down the control flow steps and writing pseudocode, I could identify the space where the issue might reside. I needed to stop the code from printing the numbers that were to be replaced. To solve this, I added the comparison operator != asking the program that if the numbers (i) were not divisible by 3 and 5, print the number (console.log(i)). I then followed with the else if conditions instructing in what cases the text must be printed. I’m not sure how elegant or efficient the solution is, but the problem was solved!
I felt frustrated, mad and then sad that I couldn’t work it out. I decided to take a self-care break and then come back to it. In hindsight, if I was more confident in using debugging techniques, it would have been solved a lot quicker. In fact, all of the blocks I had this sprint could have benefitted from a more technically established problem solving process.
I spent a lot of time on working out the updateCounts function in 5.3 Event-driven DOM modification. If I was more confident with the pseudocode and debugging techniques, I could have saved a lot of time and stress.
So far my pseudo coding technique involves scribbling a problem and what I want to do or work out line by line on a piece of paper. This is a technique I would like to develop more with a direct connection with the ‘trying something’ technique below.
Trying something is the next step following my light pseudocode process. I enjoy exercises that take me through step by step first and I learn through repetition well. The program structure, event handling, altering the DOM and event-driven DOM modification cards were great at stepping me through a problem.
However, ‘trying something’ became a compulsory technique when there was less stepping through the problem and I was left to build a solution more independently.
I don’t have a rubber-ducky, but I do know how to talk to myself a lot. During this learning process I have had to engage in a lot of self-directed dialogue to problem solve. I am not inanimate, but describing and explaining a problem to myself has helped me to identify where a technical issue and learning opportunity is for me.
I spent some time working out how to identify issues highlighted in Visual Studio Code. Helpfully, it shows the number of issues with code as you are working. Some online reviewers use extensions to turn this feature off as it constantly changes and is a distraction for them while working. However, this feature helped me to recognise that there may be an issue before I got to the ‘trying something’ or console.logging step in my problem solving process.
A lot of the exercises I have done so far require that the result be logged in order to render it visible. By default, console.logging has become a regular part of seeing if I have solved a problem correctly. However, I have not really used console.logging in an exercise that does not require it as a part of the end solution.
If I cannot find a solution in the provided resources, Google is my first step in problem solving. I have quickly discovered that the issues I encounter are not unique and often, working out the questions I need to ask around an issue helps me build a solution too.
This is something that I haven’t had any practice with; I recognise that I have started later and am so far behind that I don’t want to use others’ time and impact their learning in a negative way.
My feelings about not taking up my peers’ time has led to asking coaches for help not really being a part of my problem solving practice yet. Asking peers first and then the coaches is an established process for Phase-0. Therefore, not asking my peers means I feel like I am not entitled to ask coaches for help.
These reflections help me to understand and have an awareness of my personal barriers and some areas that could do with some extra learning technically. I recognise that being around people and getting to know them ‘kanohi ki te kanohi’ is really important to me and how I work. I have felt the best when I have had chats with tutors directly about my progress and they have provided some good feedback and practical tips on how I can move through the work that needs to be done before bootcamp.
There are a number of times where I have sat with a problem too long, but also the same number of times, I have worked it out and it demonstrates my individual resilience. However, I don’t think it should be that hard. That type of individual resilience is great for survival, but community resilience is where you can reach ‘su-thrive-al’ instead. I am keen to be part of a learning community and being in a shared space with other people learning as well will be awesome.
I am looking forward to getting in a classroom and being a part of an IRL team so much. Time and presence builds trust and I’m aware that I have had less time and presence in phase-0. Culturally, I feel ready to engage with these reflections. Technically, I want to be at a point where I am not letting the cohort down and I can engage with the bootcamp learning experience at maximum capacity.
Improving my process at this point, this week, means checking in with tutors constantly and they have made themselves available for this.


PhaseOne is McMaster University’s largest technology community with a reach of over fifteen hundred students. Our team strives
to make technology education barrier free and provide extracurricular / hands on experience outside of the classroom. PhaseOne’s
mission as a student group is to foster and grow the community by providing the necessary resources.
/Groups/Phase0ne
<EMAIL_ADDRESS>Phase One is composed of students dedicated to our mission: removing the barrier for technological education. The members of each team are chosen based on how their skills and enthusiasm can best be used towards this cause.
Team X makes dreams come true. We help foster a growing tech community at McMaster by working with talented students to help
teach new and exciting technological topics. We cover every field of technology we can, from design software to network
security. We do this because we believe there's more than what you just learn at school, and we want to help Mac students
discover things they never knew existed.
Team Members
Hamid Yuksel - Team X Lead
Rumsha Siddiqui
Pavithran Pathmarajah
Afnan Yousuf
Luke Pritchard
The promotions team for PhaseOne raises awareness of all the events hosted by the team to the McMaster and Hamilton community.
We like to engage and alert the community of other nearby tech workshops, highlight projects McMaster students have worked
on, and create conversation on technology development and how it relates to us. This is mainly done through social media
such as Facebook, Twitter, Instagram, Medium and Snapchat. We are a group of enthusiastic pro-active individuals and are
always interested in new members who want to spread the awareness of technology and its benefits.
Team Members
Melissa Lam - Director of Promotions
Jennifer Chan
Christine Mitry
Divya Sridhar
Christine Wang
Annie Yu
PhaseOne team dedicated to all things MakerSpace. This includes behind the scenes logistics with operating the space, keeping inventory of and planning what hardware to buy, and being active volunteers in the space. In the near future we will be recruiting MakerSpace executive team members to assist in the planning and design process, as well as general members to help volunteer and man the space.
DeltaHacks is McMaster’s annual student hackathon for change. We want to encourage students in all fields of study to come
together to build real world applications that create positive change. The ultimate goal behind this hackathon is to include,
not only the engineering and computer science students, but all talented individuals from all backgrounds to collaborate,
create, and bring ideas to life.
Team Members
Luo - Co-Director
Stephanie Koehl - Co-Director
Logisitics Team
Richard Zang - Head of Logistics
Danielle Shwed
Darren Tu
Dragon Visekruna
Levin
Noronha
Isabela Ozamizic
Supportive Relations
Natalie Chin
Isabelle Kim
Samrudh Bangalore
Aprooav Soni
The Code Nights team facilitates Phase One's weekly event where students come together to socialize, learn to code, and
develop their applications with the help of available mentors.
Team Members
Dave Gumba - Code Nights Head
Sabrina Mounphas - Outreach
Rajat Arora - Lead Mentor
Mitch David - Organizer


Counts the number of objects matching a set of conditions
FORM
count [flags] <object specifier>
EXAMPLES
$ fish count -q 'has alice/rating'
141 objects matched
Total: 141 objects
$ fish count -a 'Eiffel Tower'
Total: 1 object
$ fish count -q 'fluiddb/about matches "Eiffel Tower"'
6 objects matched
Total: 6 objects
NOTE FOR WINDOWS USERS Working from a Windows command line, single quotes do not work as above. Instead you need to use double quotes and “stutter” quotes inside quotes. So the last example becomes:
fish count -q ""fluiddb/about matches ""Eiffel Tower"""
The command produces no output when successful, even if the tag did not exist.
$ fish untag -F -a "Eiffel Tower" bert/rating
Failed to remove tag bert/rating from object with about="Eiffel Tower"
Error code 401 (UNAUTHORIZED)
NOTES
The Fluidinfo API does not provide a primitive count function, so FDB actually has to retrieve all the objects that match the query and count them; this operation can, therefore, be comparatively slow.
The user’s ability to read tags is regulated by the permissions system, so the count reflects that, i.e. it is the restricted to objects that the user can see the relevant tags for.


There is error while you request to upgrade your account.
{{ error }}
For more information, please visit FAQ page or Contact us.


ubuntu 离线安装makefile
Posted by Bigzhao on April 29, 2017
深入理解操作系统笔记
Posted by Bigzhao on March 10, 2017
数据结构：有向无环图的表示
Posted by Bigzhao on February 10, 2017
mpi 学习笔记-持续更新
Posted by Bigzhao on January 10, 2017
ubuntu12.04 源码安装 mpich2
Posted by Bigzhao on January 7, 2017
Piotr's matlab toolbox 遇到的问题
Posted by Bigzhao on December 27, 2016
ubuntu server 16.04 挂载硬盘
Posted by Bigzhao on December 3, 2016
ubuntu server 16.04 配置网络
Posted by Bigzhao on November 25, 2016


Walk for charity on Nov. 24 in Dharwad
by Special CorrespondentA walk for charity and planting of 1,000 saplings will mark the 71st birthday celebrations of Dharmasthala Dharmadhikari Sri Veerendra Heggade in Dharwad on Sunday.
The SDM College of Medical Sciences and Hospital, the SDM College of Dental Sciences and Hospital, and the SDM College of Engineering and Technology, Dharwad, have jointly organised this event, just as they have done over the past 10 years, in which hundreds of people have taken part, according to Vice Chancellor of SDM University Niranjan Kumar.
The event, the theme of which is ‘Save Earth’, will be flagged off from Kadapa Maidan in Dharwad at 9 a.m. on Sunday by Hubballi-Dharwad Police Commissioner R. Dileep, and it will conclude at SDM College of Medical Sciences and Hospital at Sattur after covering 7 km.
The first walk for charity was conducted in 2007 and the money is being used for providing medical benefits to poor patients.
Vanamahotsava
As part of the event, around 1,000 saplings will be planted along the road side and at Sanjivini Biological Park near Navalur railway station. The event is likely to see participation of over 1,500 persons from different walks of life.


In Powerpoint you can make slides with items that appear automatically with effects. Appearance is a plugin for Reveal.js that does the same.
Appearance is easy to set up. It uses Animate.css by Daniel Eden for the animations, with some changes in a separate CSS file to allow for a non-animated state.
Let's check out what Appearance does:
Let text appear
Add it to any text element
Like list items, or headers.
It adds some impact.
Let images appear
Change the delay
Use data-delay="*" on each element, where the wildcard is the delay in microseconds
Change the animation speed
Use the speed classes from Animate.css to change the speed of the animation:
slower
slow
fast
faster
Inside fragments
Like this (click next):
Change when Appearance starts
Change when Appearance starts
You can use any of the following events:
slidetransitionend (default, after the transition)
slidechanged (with the transition)
auto (with transition, on autoanimate slides)
This can also be set per-slide with data-attributes.


The Course
The course is 5000m (5K) long. The course is in Black Park Country Park, Slough and run on compacted earth and gravel tracks. Some sections of the course may accumulate mud, leaves and puddles after rain. Dependent on availability, marshals will be at key sections of the course, or signs will be in place.
Please remember that the parkrun uses shared paths. For the continued success of the event, please give way to other park users. This won't hurt your time, it won't stop you from getting a PB and it will make sure everyone continues to enjoy the event.
Please, wherever possible walk, jog, cycle or use public transport when attending the event. If you do have to drive, please consider car-sharing to reduce our impact on both the environment and other park users. Please also watch out for other park users when arriving and leaving. Parking may be limited so try to arrive early.
Course Safety
The Black Park parkrun is a fun, free event organised by volunteers for the benefit of everyone. We wish to make the run as safe as possible, so runners, spectators and helpers are asked to take care about the following:
- Please be considerate to the park and other park users at all times.
- Children under the age of eleven must be accompanied (within arm's reach) throughout the run by a parent, guardian or appropriate adult of the parent's choice.
- Please arrive by foot, by pedal-power or by public transport if you can - your efforts help to reduce our impact on the park and the planet.
- Please consider volunteering to help occasionally - this event survives only because of your generosity - please visit the volunteer page for more information.
- Take care near roads and car parks - some vehicles drive very quickly. Please congregate away from the cars and be careful in particular if you have children. If you’re driving to the run, please drive carefully even if you’re late!
- When running, take care on uneven surfaces - whether on grass or on tarmac. Watch out for cyclists, other runners, pedestrians, children, dogs, wildlife, park animals, vehicles, park maintenance work, falling branches, bollards, posts and other obstacles around the course.
- Please ensure that you are fit enough to walk, jog, run 5k (3.1 miles) with us. Health advice about running can be found at the excellent Runners' Medical Resource website (although this external website focuses on preparation for a race and does not describe parkrun events).
- Remember to warm up before the run.
- If you see a runner with a serious problem, please stop to help them out and get help as soon as possible.
- If you’re watching, keep clear of runners on the course, and look after any children and dogs you may have with you.
- It is not permitted to run with a pushchair and a dog at the same time.
- Runners wishing to run with a dog are welcome, but please keep the dog on a short lead or harness and under control throughout the event. Please also review the parkrun support page article about running with a dog at parkrun events.
- Runners pushing buggies are also welcome, but please take extreme care of other runners around you. If possible start from the back of the field and try to keep to one side of the main body of runners.
- Lyme Disease is a bacterial infection spread to humans by infected ticks. Consider protecting yourself by wearing repellent when at parkrun events in grassy or wooded areas. See lymediseaseuk.com for further details.
We hope these tips help to ensure that Black Park parkrun is fun and safe for everyone.
Age Grading
All parkrun events use Age Grading to help athletes compare results.
Age Grading takes your time and uses the world record time for your sex and age group to produce a score (a percentage). This score allows you to compare your personal performance against other people's performances even though they might be a different age and a different sex to you - the higher the score the better the performance. The scores can also be compared across different race distances - to allow you to, for example, compare a 5km time against a marathon.
For more information, please see our
Support page.
Course Map
View
Black Park parkrun in a larger map
Course Description
The course is one lap on firm, flat and wide tracks of compacted earth and gravel. Fast times can be expected. The start is approximately 100m along the track at the east end of the car park. All course turns are marked with direction arrows - if there is no sign you should always stay on the path you are on.
The route goes north for 630m before turning right (signed). Follow this wide track (which swings gradually to the right) ignoring all side turnings for 1560m until the main A412 road is reached at the bottom south east corner of the park. Turn right (signed) and go forward with the main road just outside the park on your left hand side for 550m until reaching a crossing of tracks. Turn right again (signed) and continue on this track for 350m to a fork of tracks. Take the right fork (signed) and continue for another 750m ignoring all side turnings until reaching the next sign. Turn left and continue for 350m to a "T" junction at the heathland area. Here turn left again (signed) and run 400m to the next crossroads. Turn left (signed), then in 250m turn right (signed) for a straight 160m to the finish line.
Facilities
Parking: Parking:Black Park has a 2 hour car parking charge of £2.70 if the ticket is purchased before 9am (£3.70 after 9am). If you are staying beyond 2 hours please purchase an appropriate ticket on arrival. The ticket machines will take cash or contactless payment cards, and require entry of the last 3 digits of your vehicle registration.
Please note that there are regular enforcement patrols.
If you are going to be a regular parkrunner at Black Park then we would recommend purchasing an annual parking pass for £50.00. This gives year round parking at Black Park, and also at Langley Park and Denham Country Park.
Full parking details can be found on the
Buckinghamshire County Council website.
Please do not park in Black Park Road as the local farmers require constant access for large items of farm machinery. Blocking their access puts our South Bucks event licence at risk.
Cafe: Cafe San Remo offers full sit-down indoor and outdoor service, and is located on the other side of the lake from the car park. The San Remo Kiosk is located at the top end of the car park, near the parkrun
start/finish, and offers drinks and light refreshments and outdoor seating.
Toilets: Full toilet facilities including baby changing and accessible toilets are available at Cafe San Remo and at the kiosk.
Visitor centre: Located by the lake, near Cafe San Remo. Buy your annual parking permit or orienteering maps, pick up free maps and leaflets and find out more about the park.
Other Activities:
Go Ape Treetop Adventure & Junior Adventure.
Go Ape Forest Segway
Go Ape Forest Biking
Go Ape discount cards are regularly available for parkrunners in the post-run scanning area.
535 acres of woodland, heathland and open space, including over 10 miles of well-surfaced tracks suitable for buggies and wheelchairs. Free parking for disabled badge holders and accessible toilets. Mobility buggies are available free of charge (prior booking required)
Children's Woodland Adventure Play Area
Picnic areas
Getting There
Location of start
The start is approximately 100m beyond the gate at the east end of the car park.
Getting there by public transport
Bus: Bus service 335 from bay 1 at Slough Bus Station to Chalfont Common. Departs 0807. Get off at the Stag public house, Wexham Street. 11 minute journey. From there it is a 1.5 km walk down Rowley Lane to Black Park car park.
Bus service 58 from Uxbridge LT station to Britwell. Leaves 08:05 Saturday mornings. 15 minute journey maximum. Get off at Warren House Farm (Crooked Billet) and continue for 700 metres down the A412 until Black Park is reached on the right hand side. Go through the park approximately 1 km to the car park. A park map showing your location is displayed at this entrance.
Train: The nearest rail station is Langley. From there it is a 5 km walk.
Getting there on foot
The park is rather out of town and unfortunately most of the roads around the park are country lanes with no pavements. For this reason we find that the majority of our participants prefer to drive or cycle.
Getting there by road
Black Park is clearly signposted from the A412 between Slough and Iver
Heath. It is approximately 4 miles from M40 Junction 1, 5 miles from M4
Junction 5.
For satnavs the nearest postcode is SL3 6DS. Follow the signs from here
for the public car park.
Post Run Coffee
Every week we grab a post parkrun coffee at the cafe - please come and join us.


{% extends "base.html" %}
{% block title %}Questions to Ministers | PMG{% endblock %}
{% block page %}
Questions and Replies
Filter by year
{% for question in questions.results %}
{% if question.code %}
{% include '_committee_question_detail.html' with context %}
{% else %}
{% include '_question_reply_detail.html' with context %}
{% endif %}
{% endfor %}
{% include 'pagination.html' %}
{% include "_correct_this_page.html" %}
{% endblock %}


It allows clients to upload multiple sets of RDF assertions, and then perform SPARQL queries on them. It has both a RESTful interface and an XML-RPC one.
For details of the interface, see the top page of the running
servlet, or web/index.html
in the source code distribution.
It is implemented using the Jena library from HP.


Print of The Month
Jamie Perry
Contemporary American Realist Painter
Print of The Month
Archival pigment prints are produced on heavy-weight cotton poly-blend canvas (395 grams per square meter). Each limited edition print of 50 is signed by Jamie Perry. Prints as priced are unframed, and are rolled and shipped in a postal tube.
Thank you for your interest in art by Jamie Perry.
Artwork will be shipped by UPS or US Mail. Items shipped within the United States are billed at a flat of $25; international orders are sent via Express Shipping and billed at a flat rate of $60. Orders should arrive within 14 business days. Exceptions to delivery timelines or special orders will be discussed with the collector.
If for any reason, you are not satisfied with your purchase, you can return the item or exchange it for the purchase price. Shipping fees will not be refunded. To return an item please notify us by email at<EMAIL_ADDRESS>within 7 business days following receipt of the item. Returned items must be in an unused, sellable condition.
Most of my paintings are comprised of two main elements...light and space. A solitary subject illuminated on a vast plane of darkness invites the viewer to feel a sense of isolation, but at the same time, warmth and safety in the light, with freedom to move about in the seemingly boundless space.
An open road leading to a vanishing point symbolizes the future, and the journey that we all take to get there. My aim is to create work that evokes sentimental feelings in the viewer, and transcends them to a place where life is simple and unobstructed.


I had obtained six .5 mg clonazepam tablets and after a trying evening of work, I decided to ingest three of them. They were small, yellow pills and tasted chalky going down. I expected a similar experience to oral diazepam.
In this sense, I was right. The effects were very similar. However, unlike valium, which I feel gives me a relaxed, benevolent apathy towards my surroundings, clonazepam made me feel quite stoned. The apathy was still there, but my mind was a bit cloudy. My motor skills were not greatly affected. I could talk reasonably intelligently and walk without difficulty.
However, about an hour and a half after taking the first three pills, I decided to take the other three. I was quite affected from the initial dose but still intelligable. However, another hour past and I had extreme difficult walking and keeping my balance. My center of gravity seemed to fluctuate and although I tried desparately to maintain balance, I fell down frequently.
I retired to my bed and for about half an hour, I writhed under my blankets, relishing the warmth, comfort, and safety of it. The next ten hours were one of the most intense dream cycles of my life. I spent nearly all sleep in my REM stage, epic dreams weaving fantastic images and sounds and feelings into strange and beautiful realities. The specifics of the dreams are not important, but the feeling of utter wonder from such powerful dreams was truly refreshing. Unfortuately, after ten hours of beautiful dreams, a wasp somehow managed to get into my room and sting me on the meat of my upper arm. I was not pleased. Neither was the wasp when I squished it (sorry to insect lovers).
In retrospect, clonazepam certainly is a useful drug in a medical sense and an entertaining one in a recreational sense. The second dose of 1.5 mg was definetely not needed but I suffered no ill effects (minus a bit of slowness in the morning that was cured with a cup of coffee and a cold shower). I believe that even the first 1.5 mg dose was a bit large if one desired to venture out into public. This was my first experience with the drug and I feel that I should have started with just one pill (.5 mg) before jumping into benzo-land with such a large dose.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


--- title: Product Design description: My product design degree work from University of Wales Institute Cardiff layout: default --- This work was produced as part of my Product Design, BA course at University of Wales Institute Cardiff (UWIC).
The front of the phone handles the normal phone duties. Whilst the back of the phone is a multimedia centre handling movies, photos, music and file transfer…
The layout and shape of the phone was designed for easy operation and comfortable viewing of multimedia in both portrait and landscape orientations.
An electronic calendar. One for unit for home and one for office, the units synchronise, once docked onto their stand, over a standard phoneline connection ensuring they are always fully up to date.
For example, amendments made to the organiser information at home by the wife, appear on the husbands unit at work.
The name Kalanda is a hybrid of calendar and LAN (Local Area Network), to highlight the connectivity of the device.
Simpla was an exercise in redesigning the humble stapler to require fewer components for more simple and cheaper manufacture.
Through clever use of materials and design, the stapler has a natural flex which does away with the need for a hinge section and thus reducing the number of components. The design has a strong resemblance to a hair grip or clip and this emphasises the notion of flexibility.
The cooler project was based on Igloo Coolers, a popular american brand of cooler.
Take>About is a lunchbox form factor for the school market. It features a two part form, the outer half provides the cool pack and sturdy protection, plus detachable shoulder strap. The draw fastens securely and can be removed for cleaning.
Saucer was a solution to echoey public address(PA) announcements.
The dome shape and bottom fins difuse echoes away to nothing.
The unit contains conductive speakers for public address and background music whilst remaining sealed and waterproof from harsh conditions.
The top of the dome contains uplighting, power and hanging fixtures.
Safe-2-O is a travel product for the average tourist to take away with them to purify the local water whilst on holiday. A brief dose from the germicidal lamp kills any harmful bacteria present in the local water. The product is designed to be much more travel friendly for the casual tourist to take away and keep them safe on their journey compared to more cubersome or techincal water purifying processes.
The device emits UV light in the UVC band, which destroys the DNA of any harmful bacteria rendering them effectively harmless.


associate_jsonb¶ ↑
Easy PostgreSQL JSONB extensions¶ ↑
including:
-
Basic ActiveRecord Associations using PostgreSQL JSONB columns, with built-in accessors and column indexes
-
Thread-Safe JSONB updates (well, as safe as they can be) using a custom nested version of
jsonb_set
(jsonb_nested_set
)
Requirements:
-
PostgreSQL (>= 12)
-
Rails <IP_ADDRESS>
Installation¶ ↑
Add this line to your application's Gemfile:
gem 'associate_jsonb'
And then execute:
$ bundle install
Usage¶ ↑
Jsonb Associations¶ ↑
One-to-One and One-to-Many associations¶ ↑
To set up your jsonb column, you can use the built in add_reference
/table.references
function. This will only add a new store column if it doesn't already exist
rails g migration add_foreign_key_store_to_my_table
class AddForeignKeyStoreToMyTable < ActiveRecord::Migration[6.0] def change add_reference :my_table, :user, store: :extra # => store created add_reference :my_table, :label, store: :extra, null: false # => store already exists, NOT NULL check constraint added to `store->'label_id'` # NOTE: you can also use a `change_table(:my_table) block` end end
and
class CreateMyTable < ActiveRecord::Migration[6.0] def change create_table(:my_table) do |t| t.references :user, store: :extra t.references :label, store: :extra, null: false end end end
If you add the jsonb_foreign_key
function to your database, you can also create a foreign_key check constraint by using the same built-in :foreign_key
option used in normal reference definitions.
NOTE: true foreign key references are not possible with jsonb attributes. This will instead create a CHECK constraint that looks for the referenced column using an EXISTS
statement
rails g migration add_jsonb_foreign_key_function
class AddJsonbForeignKeyFunction < ActiveRecord::Migration[6.0] def up add_jsonb_foreign_key_function end end
class CreateMyTable < ActiveRecord::Migration[6.0] def change create_table(:my_table) do |t| t.references :user, store: :extra, foreign_key: true, null: false end end end
class CreateMyTable < ActiveRecord::Migration[6.0] def change create_table(:my_table) do |t| t.references :person, store: :extra, foreign_key: { to_table: :users }, null: false end end end
You can store all foreign keys of your model in one JSONB column, without having to create multiple columns:
class Profile < ActiveRecord::Base # Setting additional :store option on :belongs_to association # enables saving of foreign ids in :extra JSONB column belongs_to :user, store: :extra end class SocialProfile < ActiveRecord::Base belongs_to :user, store: :extra end class User < ActiveRecord::Base # Parent model association needs to specify :foreign_store # for associations with JSONB storage has_one :profile, foreign_store: :extra has_many :social_profiles, foreign_store: :extra end
Many-to-Many associations¶ ↑
Due to the ease of getting out-of-sync, and the complexity needed to build it, HABTM relation functionality has not been implemented through JSONB
jsonb_set based hash updates¶ ↑
When enabled, only keys present in the updated hash and with values changed in memory will be updated. To completely delete a key/value
pair from an enabled attribute, set the key's value to nil
.
e.g.
# given: instance#data == { "key_1"=>1, # "key_2"=>2, # "key_3"=> { "key_4"=>7, # "key_5"=>8, # "key_6"=>9 } } instance.update({ key_1: "asdf", a: 1, key_2: nil, key_3: { key_5: nil }}) # instance#data => { "key_1"=>"asdf", # "a"=>"asdf", # "key_3"=> { "key_4"=>7, # "key_6"=>9 } }
enabling/adding attribute types¶ ↑
first, create the sql function
rails g migration add_jsonb_nested_set_function
class AddJsonbNestedSetFunction < ActiveRecord::Migration[6.0] def up add_jsonb_nested_set_function end end
then in an initializer, enable key based updates:
# config/initializers/associate_jsonb.rb AssociateJsonb.enable_jsonb_set
-
Key based updates rely on inheritance for allowed attribute types. Any attributes that respond true to
attr_type.is_a?(GivenClass)
for any enabled type classes will usejsonb_nested_set
-
To add classes to the enabled list, pass them as arguments to
AssociateJsonb.add_hash_type(*klasses)
. Any arguments passed toAssociateJsonb.enable_jsonb_set
are forwarded toAssociateJsonb.add_hash_type
-
By default, calling
AssociateJsonb.enable_jsonb_set(*klasses)
without arguments, and no classes previously added, addsActiveRecord::ConnectionAdapters::PostgreSQL::OID::Jsonb
to the allowed classes list
disabling/removing attribute types¶ ↑
-
by default
jsonb_nested_set
updates are disabled. -
if you've enabled them and need to disable, use:
AssociateJsonb.disable_jsonb_set
-
To remove a class from the allowed list while leaving nested set updates enabled, use
AssociateJsonb.remove_hash_type(*klasses)
. Any arguments passed toAssociateJsonb.disable_jsonb_set
are forwarded toAssociateJsonb.remove_hash_type
Automatically delete nil value hash keys¶ ↑
When jsonb_set updates are disabled, jsonb columns are replaced with the current document (i.e. default rails behavior)
You are also given the option to automatically clear nil/null values from the hash automatically when jsonb_set is disabled
in an initializer:
# config/initializers/associate_jsonb.rb AssociateJsonb.jsonb_delete_nil = true
Rules for classes to which this applies are the same as for jsonb_nested_set
; add and remove classes through AssociateJsonb.(add|remove)_hash_type(*klasses)
Developing¶ ↑
To setup development environment, run:
$ bin/setup
To run specs:
$ bundle exec rspec
License¶ ↑
The gem is available as open source under the terms of the MIT License.


Form control statuses
| Touched |
{{ reactiveRange?.touched }} |
| Pristine |
{{ reactiveRange?.pristine }} |
| Valid |
{{ reactiveRange?.valid }} |
Form control value
calculatorId: {{ reactiveForm.value.lastDonation?.calculatorId }}
startDate: {{ reactiveForm.value.lastDonation?.startDate | date }}
endDate: {{ reactiveForm.value.lastDonation?.endDate | date }}
Manipulate value and state


"Make it Happen!"
Desmond worked extensively on the back end infrastructure
of PlanR, responsible for the
creation and maintenance of
The Java-based server as well as the architecture of the
MongoDB database.
Desmond is a Senior at The University of Alabama studying
Computer Science.
Logan contributed to the front end infrastructure of PlanR,
responsible for handling front
end REST actions and working with
JSON retrieved from the database.
Logan is a Senior at The University of Alabama studying
Computer Science.
Isaac focused his efforts on the front end development of
PlanR, working regularly with
React Native to provide the
best possible user experience for adopters.
Isaac is a Senior at The University of Alabama studying
Computer Science.
Jacob primarily contributed to the implementation of Braintree's
Venmo API,
allowing for the incorporation of Venmo functionality
for users. He also worked
alongside Desmond on the back end when
needed.
Jacob is a Senior at The University of Alabama studying
Computer Science.


aMaze
Easy
Medium
Hard
Impossible
Use W-A-S-D or arrow keys to move
Desktop only for now
You Win!
Retry?


%¬%
Create Post
Connect
Notifications
User
@user
Dashboard
Create Post
Reading list
Reading list
Reading list
%¬%


\(\because\) Quantitative Ecological Dynamics Group \(\because\)
W e are theoretical (paleo)ecologists motivated by the search for generalities shaping and constraining the root ecological mechanisms from which macroevolutionary patterns emerge. To gain a mechanistic understanding into ecological process, we primarily employ theoretical and computational toolkits that allow us to construct a series of hypothetical relationships into a model (the simplicity) from which the dynamical fallout (the complexity) can be compared against nature. While the complexity of such a model can never replicate the complexity of nature, it may cast a silhouette that relates to the natural world. By deploying models that capture these silhouettes from multiple angles, we seek to understand how the constraints operating on individuals within populations, and populations within communities, contribute to the long-term ecological and evolutionary dynamics shaping ecosystems past, present, and future.
Our specific research interests can be categorized into four primary themes that operate on different scales. Threading through each is our interest in understanding how consumer foraging behaviors drive the large-scale dynamics of populations and communities over both ecological and evolutionary time. Because of our focus in theory, we work on a wide variety of systems.
- What are the ecological constraints that shape individual foraging behaviors?
- Can ecological processes be used to understand and predict macroevolutionary dynamics?
- How do individual behaviors influence population dynamics over eco–evolutionary timescales?
- How does the reticulate nature of species interactions influence the ecological and evolutionary dynamics of communities?


Try out our Premium Member services: Virtual Legal Assistant, Query Alert Service and an ad-free experience. Free for one month and pay only if you like it.
CW PIL No. 269 of 2017.
8.12.2017 Present: Ms. Jyotsna Rewal Dua, Sr. Advocate with Ms. Charu Bhatnagar, Advocate as Amicus Curiae.
.
Mr. Shrawan Dogra, Advocate General with Mr. Anup Rattan , Addl. AG for respondent-State.
Mr. Rahul Mahajan, Advocate for the Indian Railways.
Mr. T.S. Chauhan, Advocate for the Pollution Control Board.
Mr. Sanjeev Kuthiala, Advocate for respondent No.10-Municipal Council Parwanoo.
Mr. Satyen Vaidya, Sr. Advocate with Mr. Vivek r Sharma, Advocate for respondent No.8.
Mr. C.N. Singh, Advocate for respondent No.12.
Hr. Hamender Chandel, Advocate for Municipal Corporation, Shimla.
Mr. Shivank Singh Panta, Advocate in CMPs No. 1034, 1037,1039 and 10311 of 2017.
Mr. Nitin Thakur, Advocate in CMP No. 10290 of 2017.
Mr. T.S. Chauhan, Advocate for the Pollution Control Board states that in compliance of order dated 5th December, 2017, a sum of `10 lacs already stand released in favour of the Municipal Council, Parwanoo and the remaining amount of `40 lacs shall positively be released latest by 12th December, 2017.
Mr. Sanjeev Kuthiala, Advocate, for Municipal Council Parwanoo, states that tenders for transportation of municipal solid waste already stand issued and are likely to be ::: Downloaded on - 11/12/2017 23:07:41 :::HCHP :2: opened on 11th December, 2017 and the work of transportation shall positively commence in the coming week. He further states .
that save and except for 32 defaulters, all other defaulters have now paid their municipal property and sanitation taxes. With regard to 32 defaulters, the Council has already approached the authorities for taking appropriate action.
Mr. Satyen Vaidya, learned Senior Counsel for Electricity Board and Mr. C.N. Singh, Advocate for the respondent No. 12 state that the list of defaulters has now been received. They both state that necessary action in compliance of order dated 5th December, 2017, shall positively be taken within a period of 24 hours.
At this stage, Mr. T.S. Chauhan states that as on date out of approximately 500 industrial units in Parwanoo, 127 units stand inspected, out of which with respect to 27 cases electricity stands disconnected of such units, who were found to be not complying with the environmental laws and notices stand issued to other 25 units. List of these units, who are not complying with the environmental laws be furnished during the course of the day to Mr. C.N. Singh, Advocate, who further states that within 24 hours water connection of such units shall also be disconnected.
::: Downloaded on - 11/12/2017 23:07:41 :::HCHP :3:It is pointed out that some of the establishments are habitual defaulters for not complying with the environmental .
laws. In fact in the year 2011 when one such defaulter came seeking redressal of his grievance, this Court vide order dated 1.7.2011 in CWP No. 7626 of 2010 had imposed cost of `25,000/-. We clarify that similar cost from perpetual defaulters be recovered by the Pollution Control Board at the time of issuance of no objection certificate while directing restoration of their electricity and water connections. The use to which the cost so collected shall be put, will be subsequently ordered by us at a later date.
At this stage, Mr. Vijay Arora, Advocate, who is an Accredited Legal Correspondent and who is ordinarily assisting the Court as Amicus and otherwise covering issues with regard to the environment in the State of Himachal Pradesh, states that perhaps situation in Dharamshala, Mcleodganj and surrounding area is worse than that of Parwanoo. The establishments set up at these places are being run without obtaining consent under the Water (Prevention and Control of Pollution) Act, 1974;
Municipal Solid Waste Management and Handling Rules, 2016;
and Air (Prevention and Control of Pollution)Act, 1981. Also there is violation of Himachal Pradesh Tourism Development and Registration Act, 2002.
::: Downloaded on - 11/12/2017 23:07:41 :::HCHP :4:This is in addition to the unauthorized construction which has taken place in utter disregard to the Municipal Laws.
.
Mr. T.S.Chauhan, Advocate, states that there is Regional Office of Pollution Control Board in District Kangra. Let the Officer manning the said office have all the establishments falling within Municipal Corporation, Dharamshala as well as Mcleodganj and Nadi inspected and submit the report on the next date of hearing.
CMP No. 10426 of 2017.
Ms. Seema Guleria, Advocate, has filed application, which is taken on record.
Mr. Kush Sharma, learned Deputy Advocate General, under instructions, states that Director, Urban Development and two Experts of the Pollution Control Board shall visit the State of Karnataka where the plant for processing municipal solid waste stands installed by the applicant. We clarify that in the application, the applicant has already stated that all expenses for travelling, boarding and lodging shall be borne by the applicant. Let the Committee file its report within a period of one week.
List on 15.12.2017. Date appearing at the end of order dated 1.12.2017 be read as "December 1, 2017" instead of "October 16, 2017".
(Sanjay Karol) Acting Chief Justice (Ajay Mohan Goel) Judge 8th December, 2017 (Guleria) ::: Downloaded on - 11/12/2017 23:07:41 :::HCHP


High priority
Updating the worlds so they are all VRML 2.0
Set up program for attracting donations from corporations and/or individuals
Medium priority
Create and maintain a list of all the zones, URL's, and contained Urls (Inlines)
Create a map of Terra Vista
Update tech pages with new listserve sub and unsub instructions
Update tech pages with instructions on how to add domain and email as Terra Vista
Update tech pages with instructions on mime types for 2.0 (model/vrml)
Update tech pages with instructions on adding vHomes to Zones (if one doesn't have a Zone)
Update tech pages to point to the Terra Vista FAQ
Update Opportunities page to include Adam Gruen's vCity project
Update tech pages to include tools such as VRMLlint, vrml1to2, etc
Low priority
Test Hyberbolic spaces for Terra Vista (ie. Object of focus becomes large, rest become small)
Examine effects of animation within a Zone
Create comparison documentation for VRML 1.0c and 2.0/97
Examine how to define 4D spaces using VRML 2.0
Examine a randomized Flux model and textured sphere functionality (a world model)
Bring forward the List Serve archive and make available to public
Examine Theatre Analogy method of developing VRML
Examine methods of displaying HTML within VRML (as in a texture)
Back to Terra Vista
Mail me
if you are interested in providing opportunities within the community.
Warning:


Pearl Harbor
Not quite sure exactly what this is
The North Shore
Bridge and Wood
Lighthouse on Kauai
1
2
3
4
Prev
Next


Education
Graduated in Telecom Engineering
Final Project: Didactic Application GUI with Electromagnetics simulations in Matlab
RIAtec Master in Web Engineering
Master degree focused on last web and mobile technologies
Summary of studied technologies
- Web:HTML5, JavaScript, jQuery, AngularJS, Bootstrap, ASP .NET MVC/Web API
- Languages: C#, Java, JavaScript
- Mobile applications:Android, iOS, Windows Phone 8, WinRT
- Data access: SQL Server, ADO .NET, Entity Framework + LinQ
- Cloud Services: Azure, Amazon
- Big Data: Hadoop
- ALM: git, mercurial
- IDEs: Visual Studio 2013, Eclipse, Expression Blend, Sublime Text 2
Work Experience
Junior Software Developer at Golf Booking Now
Online Tee-off time and Golf Holidays booking. Worked as a member of the development team.
Booking engine: Developed frontend based on AngularJS + Bootstrap.
Backend: ASP .NET Web API application for online reservations.
CMS: Built the company CMS using OrchardCMS.
Languages:
C#, JavaScript
Technologies:
AngularJS, Bootstrap, OrchardCMS, ASP .NET, Entity Framework, SQL Server. Both Git and Mercurial with SourceTree
Third party APIs:
BrainTree, Twilio, Google Maps JavaScript API
Junior Software Developer at Lemoncode
Small company strongly focused on clean and quality code, working always as an open-minded team with code reviews using DCVS like git and mercurial and repository hosting services like Bitbucket and GitHub.
Languages:
C#, JavaScript
Technologies:
Xamarin Forms, AngularJS, Bootstrap, Calabash, Jasmine, Entity Framework, ASP .NET Web API, SQL Server
Third party APIs:
Parse, MixPanel, Facebook API, Twitter API, Twillio, Stripe, SendGrid, Bower
Open Source
lc-validation-summary
AngularJS directive for providing a validation summary to angular based forms
Technologies: AngularJS, Jasmine, Bower, Grunt
Associations
IEEE Malaga Student Branch
Treasurer and vocal at the IEEE Student Branch of Málaga
Contests
Megathon Malaga
Microsoft Hackathon in Malaga. Team member of the FaceLists Windows 8 application developers.
IEEE Xtreme 24h Programming
Participated twice in a team representing my College. We ranked 5th and 2nd spots in Spain
Programming Languages & Frameworks
C#, XAML, AngularJS, Bootstrap, JavaScript, HTML5, CSS3, Entity Framework, ASP .NET Web API, TeamCity, Xamarin
Operative Systems
Windows, MacOS
SO Profile
Independently used technologies
Calabash Android and iOS, Django and DjangoCMS, Python, MongoDB, Bower, Grunt
Spoken Languages
Spanish
Mother tonge
English
Good level, both written and spoken
French
Elementary proficiency
Abroad experiences
Horsham - England
One month exchange with a native family.
Marseille - France
One month exchange with a native family.
Bucharest - Romania
One semester in my third year of College


Editing Module Title Inline
How to edit the title of a module inline. Note: If this setting has been disabled, the title can instead be edited by a Page Editor on Administrator on the Module Settings page. For more details see "About Module Settings"
- Place your mouse over the module title to be edited. This displays the Edit button above the module title.
- Click the Edit button. This enables inline title editing.
- Edit the title.
- Click the Update button to save your changes - OR - Click the Cancel button to cancel your changes.


Hello there! Welcome. I am Sumeet.
I am a full stack developer, working on bleading edge technologies to build scalable enterprise solutions and web applications.
Passionate about learning new technologies, I always strive to find elegant solutions to complex problems.
My newest gig involves working with GE Transportation to help build a state of the art web application to monitor and manager rail transportation channels.
I am an agilist in the making and IOT in the learning.
Here you can find information related to the technologies I work with as well as
organizations & applications I have worked with.
Over the period of my 4+ years of experience, I have learned and worked with several technologies forming different tech stacks. Working on different combination of technologies has enabled me to work as a Full Stack Developer.


A Reflection on Learning Core at EDA
What are three new things you have learned about yourself and your ego as a result of the core learning?
My ego is interesting. I don't see myself as better than others, but I also don't see others as better than me. Others could be better at certain things, they could
be doing better then me, but they aren't better (or worse) than me.
I have strong feelings about controlling/stifling or faking your emotions (though it is a good idea to control how you react to having certain emotions).
That my future is not insurmountable - now I didn't consciously think that before but it was there, the idea that the future might be too overwhelming to do
anything about. But it will take time and practise do get better at things that I need to and want to.
What are the role of values, empathy and self awareness in learning and programming?
Knowing your values will aid in making difficult decisions, as these kinds of decisions are those that question your values. At a basic level, empathy is important when learning and programming because if you're not empathetic with/care about your co-workers/co-learners they are likely to reciprocate with the same attitude. You make others unhappy they'll make you unhappy. It also goes the other way, if you care about your co-workers they'll be more likely to care about you and it's much easier to learn or work out a problem if you aren't at eachother's throats all the time. Self awareness is important because knowing where there could be holes in your understanding is essential for learning and getting out of a rut. If you never accept that there could be a problem you'll never find it.
What has surprised you the most about the core learning?
How well I knew the content of the topics already. Most of the topics I already had an idea of but I wasn't confident in it, nor was I able to put it into words. I also wasn't applying these concepts in practise. I was surprised the concepts from core had a familiarity to them.
What were the most challenging aspects of the core learning?
Finding the right words to get across what I wanted to say. I've had to settle for good enough sometimes. I also found just starting quite challenging, once I got going it was usually alright but it always feels like it's a huge effort to undertake - this is why I said I would have like growth mindset to be earlier in the sprints (in the feedback form) as it has helped a lot but I haven't had much time to practise it. Though I wouldn't know what to push back for it.
Why do you think we, a programming school, are spending so much time focusing on core learning in a web development bootcamp course?
Because core skills are the minimum requirement for getting a job and almost no other schools teach it. With coding, having the basics is important but beyond that you can generally learn on the job (which is also a core skill, being able to and willing to learn).
Does the time you spent studying core learning here feel like a waste of time? Should you have just used that time to practising programming instead? Justify your answer.
For me in particular, definitely not. Since I already have a degree in computer science, studying core was the main reason I came here. It has helped me gain confidence both in my core skills and my tech skills as well as improving them, and I can now be more deliberate when it come to improving them both.


---
layout: post
title: ''
tags:
- machine learning
- kalman filter
- tutorial
- matlab
---
Tutorial: Kalman Filter with MATLAB example part1
This 3 part video tutorial series provides an intuitive (and quirky) explanation of the Kalman Filter. Although it lacks a derivation, it will get you up and running with the Kalman Filter in no time.
Part 2: http://www.youtube.com/watch?v=NT7nYv9Ri2Y&NR=1
Part 3: http://www.youtube.com/watch?v=rUgKnoiRoY0&feature=related


Welcome to the third project of the Machine Learning Engineer Nanodegree! In this notebook, some template code has already been provided for you, and it will be your job to implement the additional functionality necessary to successfully complete this project. Sections that begin with 'Implementation' in the header indicate that the following block of code will require additional functionality which you must provide. Instructions will be provided for each section and the specifics of the implementation are marked in the code block with a 'TODO'
statement. Please be sure to read the instructions carefully!
In addition to implementing code, there will be questions that you must answer which relate to the project and your implementation. Each section where you will answer a question is preceded by a 'Question X' header. Carefully read each question and provide thorough answers in the following text boxes that begin with 'Answer:'. Your project submission will be evaluated based on your answers to each of the questions and the implementation you provide.
Note: Code and Markdown cells can be executed using the Shift + Enter keyboard shortcut. In addition, Markdown cells can be edited by typically double-clicking the cell to enter edit mode.
In this project, you will analyze a dataset containing data on various customers' annual spending amounts (reported in monetary units) of diverse product categories for internal structure. One goal of this project is to best describe the variation in the different types of customers that a wholesale distributor interacts with. Doing so would equip the distributor with insight into how to best structure their delivery service to meet the needs of each customer.
The dataset for this project can be found on the UCI Machine Learning Repository. For the purposes of this project, the features 'Channel'
and 'Region'
will be excluded in the analysis — with focus instead on the six product categories recorded for customers.
Run the code block below to load the wholesale customers dataset, along with a few of the necessary Python libraries required for this project. You will know the dataset loaded successfully if the size of the dataset is reported.
# Import libraries necessary for this project
import numpy as np
import pandas as pd
from IPython.display import display # Allows the use of display() for DataFrames
# Import supplementary visualizations code visuals.py
import visuals as vs
# Pretty display for notebooks
%matplotlib inline
# Load the wholesale customers dataset
try:
data = pd.read_csv("customers.csv")
data.drop(['Region', 'Channel'], axis = 1, inplace = True)
print "Wholesale customers dataset has {} samples with {} features each.".format(*data.shape)
except:
print "Dataset could not be loaded. Is the dataset missing?"
In this section, you will begin exploring the data through visualizations and code to understand how each feature is related to the others. You will observe a statistical description of the dataset, consider the relevance of each feature, and select a few sample data points from the dataset which you will track through the course of this project.
Run the code block below to observe a statistical description of the dataset. Note that the dataset is composed of six important product categories: 'Fresh', 'Milk', 'Grocery', 'Frozen', 'Detergents_Paper', and 'Delicatessen'. Consider what each category represents in terms of products you could purchase.
# Display a description of the dataset
display(data.describe())
To get a better understanding of the customers and how their data will transform through the analysis, it would be best to select a few sample data points and explore them in more detail. In the code block below, add three indices of your choice to the indices
list which will represent the customers to track. It is suggested to try different sets of samples until you obtain customers that vary significantly from one another.
# TODO: Select three indices of your choice you wish to sample from the dataset
indices = [0, 100, 400]
# Create a DataFrame of the chosen samples
samples = pd.DataFrame(data.loc[indices], columns = data.keys()).reset_index(drop = True)
print "Chosen samples of wholesale customers dataset:"
display(samples)
import seaborn as sns
sns.heatmap((samples-data.mean())/data.std(ddof=0), annot=True, cbar=False, square=True)
Consider the total purchase cost of each product category and the statistical description of the dataset above for your sample customers.
What kind of establishment (customer) could each of the three samples you've chosen represent?
Hint: Examples of establishments include places like markets, cafes, and retailers, among many others. Avoid using names for establishments, such as saying "McDonalds" when describing a sample customer as a restaurant.
Answer:
Comparing each sample with the mean of data (reviewer tip) looks like that the 0 spend more money in Fresh, Milk and Grocery, and almost nothing in Frozen, so looks like a bakery.
The 1 (indices 100) was above in all features, but Fresh and well above in Detergent_Paperwas Grocery, so, to me, it looks like a hotel.
The 2 (indeces 400) was below every feature but Frozen.
One interesting thought to consider is if one (or more) of the six product categories is actually relevant for understanding customer purchasing. That is to say, is it possible to determine whether customers purchasing some amount of one category of products will necessarily purchase some proportional amount of another category of products? We can make this determination quite easily by training a supervised regression learner on a subset of the data with one feature removed, and then score how well that model can predict the removed feature.
In the code block below, you will need to implement the following:
new_data
a copy of the data by removing a feature of your choice using the DataFrame.drop
function.sklearn.cross_validation.train_test_split
to split the dataset into training and testing sets.test_size
of 0.25
and set a random_state
.random_state
, and fit the learner to the training data.score
function.from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import cross_val_score
removed = 'Delicatessen'
# TODO: Make a copy of the DataFrame, using the 'drop' function to drop the given feature
new_data = pd.DataFrame.copy(data)
new_data.drop([removed], axis = 1, inplace = True)
# TODO: Split the data into training and testing sets using the given feature as the target
X_train, X_test, y_train, y_test = train_test_split(new_data, data[removed], test_size=0.33, random_state=42)
# TODO: Create a decision tree regressor and fit it to the training set
regressor = DecisionTreeRegressor(random_state=42)
regressor.fit(X_train, y_train)
# TODO: Report the score of the prediction using the testing set
score = regressor.score(X_test, y_test)
print "Score: ", score
# reviewer code
from sklearn.cross_validation import train_test_split
from sklearn.tree import DecisionTreeRegressor
def calculate_r_2_for_feature(data,feature):
new_data = data.drop(feature, axis=1)
X_train, X_test, y_train, y_test = train_test_split(
new_data,data[feature],test_size=0.25, random_state=42 # random_state to reproduce
)
regressor = DecisionTreeRegressor(random_state=42) # update to repeat result
regressor.fit(X_train,y_train)
score = regressor.score(X_test,y_test)
return score
def r_2_mean(data,feature,runs=200):
return np.array([calculate_r_2_for_feature(data,feature)
for _ in range(200) ]).mean().round(4)
print "{0:17} {1}".format("Fresh: ", r_2_mean(data,'Fresh'))
print "{0:17} {1}".format("Milk: ", r_2_mean(data,'Milk'))
print "{0:17} {1}".format("Grocery: ", r_2_mean(data,'Grocery'))
print "{0:17} {1}".format("Frozen: ", r_2_mean(data,'Frozen'))
print "{0:17} {1}".format("Detergents_Paper: ", r_2_mean(data,'Detergents_Paper'))
print "{0:17} {1}".format("Delicatessen: ", r_2_mean(data,'Delicatessen'))
zip(new_data, regressor.feature_importances_)
Which feature did you attempt to predict? What was the reported prediction score? Is this feature is necessary for identifying customers' spending habits?
Hint: The coefficient of determination, R^2
, is scored between 0 and 1, with 1 being a perfect fit. A negative R^2
implies the model fails to fit the data.
Answer: The score was -15.76 wich means that the model fail to predict the feature 'Delicatessen'. So predict this feature isn't a good idea.
See the table that show the predicted feature and the score:
| Predicted Feature | Predictor | Score |
|---|---|---|
| Fresh | DecisionTreeRegressor(random_state=42) | -0.462688879814 |
| Milk | DecisionTreeRegressor(random_state=42) | 0.182318577665 |
| Grocery | DecisionTreeRegressor(random_state=42) | 0.636215878713 |
| Frozen | DecisionTreeRegressor(random_state=42) | -0.0438047351883 |
| Detergents_Paper | DecisionTreeRegressor(random_state=42) | 0.468649611154 |
| Delicatessen | DecisionTreeRegressor(random_state=42) | -15.7652569193 |
Without any transformation or selection the features Fresh, Frozen and Delicatessen archived negative scores, witch means that these features aren't good ones to be predicted by the others, so they are the most important features to identifying customers' spending habits. Grocery receive a 0.636, perhaps we can remove this feature to simplify the data and the model. The others has a positive score, wich means that we can predict it with relative accuracy, but Milk has a low value, so let's try to predict Grocery. With this Score I would say that it is necessary to identify the customer's spending habits.
To get a better understanding of the dataset, we can construct a scatter matrix of each of the six product features present in the data. If you found that the feature you attempted to predict above is relevant for identifying a specific customer, then the scatter matrix below may not show any correlation between that feature and the others. Conversely, if you believe that feature is not relevant for identifying a specific customer, the scatter matrix might show a correlation between that feature and another feature in the data. Run the code block below to produce a scatter matrix.
# reviewer feedback
import matplotlib.pyplot as plt
corr = data.corr()
mask = np.zeros_like(corr)
mask[np.triu_indices_from(mask, 1)] = True
with sns.axes_style("white"):
ax = sns.heatmap(corr, mask=mask, square=True, annot=True,
cmap='RdBu', fmt='+.3f')
plt.xticks(rotation=45, ha='center')
# Produce a scatter matrix for each pair of features in the data
pd.scatter_matrix(data, alpha = 0.3, figsize = (14,8), diagonal = 'kde');
Are there any pairs of features which exhibit some degree of correlation? Does this confirm or deny your suspicions about the relevance of the feature you attempted to predict? How is the data for those features distributed?
Hint: Is the data normally distributed? Where do most of the data points lie?
Answer: The reviewer feedback's code gave my much more information! By examing the diagonal, the data does not appear normally distributed, so some transformations can be applied to improve this matrix results. Visually Milk and Grocery are similiar in correltion with the other features, but for me looks like that Grocery still remains the better option.
In this section, you will preprocess the data to create a better representation of customers by performing a scaling on the data and detecting (and optionally removing) outliers. Preprocessing data is often times a critical step in assuring that results you obtain from your analysis are significant and meaningful.
If data is not normally distributed, especially if the mean and median vary significantly (indicating a large skew), it is most often appropriate to apply a non-linear scaling — particularly for financial data. One way to achieve this scaling is by using a Box-Cox test, which calculates the best power transformation of the data that reduces skewness. A simpler approach which can work in most cases would be applying the natural logarithm.
In the code block below, you will need to implement the following:
log_data
after applying logarithmic scaling. Use the np.log
function for this.log_samples
after applying logarithmic scaling. Again, use np.log
.# TODO: Scale the data using the natural logarithm
log_data = np.log(pd.DataFrame.copy(data))
# TODO: Scale the sample data using the natural logarithm
log_samples = np.log(pd.DataFrame.copy(samples))
# reviewer feedback
import matplotlib.pyplot as plt
corr = log_data.corr()
mask = np.zeros_like(corr)
mask[np.triu_indices_from(mask, 1)] = True
with sns.axes_style("white"):
ax = sns.heatmap(corr, mask=mask, square=True, annot=True,
cmap='RdBu', fmt='+.3f')
plt.xticks(rotation=45, ha='center')
# Produce a scatter matrix for each pair of newly-transformed features
pd.scatter_matrix(log_data, alpha = 0.3, figsize = (14,8), diagonal = 'kde');
After applying a natural logarithm scaling to the data, the distribution of each feature should appear much more normal. For any pairs of features you may have identified earlier as being correlated, observe here whether that correlation is still present (and whether it is now stronger or weaker than before).
Run the code below to see how the sample data has changed after having the natural logarithm applied to it.
# Hint: Change the code to show both sample dataset (better to see)
# Display the log-transformed sample data
print "Original sample dataset:"
display(samples)
print "Log-transformed sample dataset:"
display(log_samples)
Detecting outliers in the data is extremely important in the data preprocessing step of any analysis. The presence of outliers can often skew results which take into consideration these data points. There are many "rules of thumb" for what constitutes an outlier in a dataset. Here, we will use Tukey's Method for identfying outliers: An outlier step is calculated as 1.5 times the interquartile range (IQR). A data point with a feature that is beyond an outlier step outside of the IQR for that feature is considered abnormal.
In the code block below, you will need to implement the following:
Q1
. Use np.percentile
for this.Q3
. Again, use np.percentile
.step
.outliers
list.NOTE: If you choose to remove any outliers, ensure that the sample data does not contain any of these points!
Once you have performed this implementation, the dataset will be stored in the variable good_data
.
# For each feature find the data points with extreme high or low values
from collections import Counter
c = Counter()
for feature in log_data.keys():
# TODO: Calculate Q1 (25th percentile of the data) for the given feature
Q1 = np.percentile(log_data[feature], 25)
# TODO: Calculate Q3 (75th percentile of the data) for the given feature
Q3 = np.percentile(log_data[feature], 75)
# TODO: Use the interquartile range to calculate an outlier step (1.5 times the interquartile range)
step = 1.5*(Q3-Q1)
# Display the outliers
print "Data points considered outliers for the feature '{}':".format(feature)
data_filter = ~((log_data[feature] >= Q1 - step) & (log_data[feature] <= Q3 + step))
o = log_data[data_filter]
# get the index of outliers
i = log_data.index[data_filter] # there is some pythonic way?
c.update(i)
display(o)
# OPTIONAL: Select the indices for data points you wish to remove
outliers = c.keys()
print "Outliers for more then one feature:"
print sorted(list(k for k, v in c.items() if v > 1))
# Remove the outliers, if any were specified
good_data = log_data.drop(log_data.index[outliers]).reset_index(drop = True)
Are there any data points considered outliers for more than one feature based on the definition above? Should these data points be removed from the dataset? If any data points were added to the outliers
list to be removed, explain why.
Answer:
The list [65, 66, 75, 128, 154] represents the outliers for more then one feature. All points marked as outlier at least once is removed. Outliers don't represent the data behavior and so can't be used to predict the data.
In this section you will use principal component analysis (PCA) to draw conclusions about the underlying structure of the wholesale customer data. Since using PCA on a dataset calculates the dimensions which best maximize variance, we will find which compound combinations of features best describe customers.
Now that the data has been scaled to a more normal distribution and has had any necessary outliers removed, we can now apply PCA to the good_data
to discover which dimensions about the data best maximize the variance of features involved. In addition to finding these dimensions, PCA will also report the explained variance ratio of each dimension — how much variance within the data is explained by that dimension alone. Note that a component (dimension) from PCA can be considered a new "feature" of the space, however it is a composition of the original features present in the data.
In the code block below, you will need to implement the following:
sklearn.decomposition.PCA
and assign the results of fitting PCA in six dimensions with good_data
to pca
.log_samples
using pca.transform
, and assign the results to pca_samples
.from sklearn.decomposition import PCA
# TODO: Apply PCA by fitting the good data with the same number of dimensions as features
pca = PCA(n_components=6, random_state=43)
pca.fit(good_data)
# TODO: Transform log_samples using the PCA fit above
pca_samples = pca.transform(log_samples)
# Generate PCA results plot
pca_results = vs.pca_results(good_data, pca)
How much variance in the data is explained in total by the first and second principal component? What about the first four principal components? Using the visualization provided above, discuss what the first four dimensions best represent in terms of customer spending.
Hint: A positive increase in a specific dimension corresponds with an increase of the positive-weighted features and a decrease of the negative-weighted features. The rate of increase or decrease is based on the indivdual feature weights.
Answer: After removing the outliers the weights inverses the signal in the first and second dimensions, but the amount of variance didn't change much. For first and second PC's there are 0.4993+0.2259=0.7252 variance. For first four dimentions this number increases to 0.7252+0.1049+0.0978=0.9279 with is an increase of 27% in relation with the first two dimentions. This is a relative low increases, which points that the first two dimetions are more important. In other words the first four PC's cover the most variation, but the two first are responsible for the majority of variance.
The first PCA has a strong positive correlation with Detergent_Paper, Grocery and Milk, so they score is increased by the first PCA. This is a suggestions that these features vary together. Even further we see that this component correlates most strongly with Detergents_Paper. So this component can be viewed as a quality measure of that feature mainly for Detergent_Paper and the lack of quality in ther other features. The second component increases with increasing Froze, Fresh and Delicatesse. The third component increases with decreasing Fresh (a lot) and increasing Delicatessen.
From the first four dimentions we can see that Grocery and Milk decreases the negative-weight wich mean that they have a bigger influence. Fresh decrease a positive-weight and then keep the value in negative-weight. Frozen switch from negative to positive-weight and Delicatessen show the inverse behavior. The first four dimentions shows that Milk and Grocery has a strong influence in the customer spending, so they can be used in the prediciont model.
Run the code below to see how the log-transformed sample data has changed after having a PCA transformation applied to it in six dimensions. Observe the numerical value for the first four dimensions of the sample points. Consider if this is consistent with your initial interpretation of the sample points.
# Display sample log-data after having a PCA transformation applied
display(pd.DataFrame(np.round(pca_samples, 4), columns = pca_results.index.values))
When using principal component analysis, one of the main goals is to reduce the dimensionality of the data — in effect, reducing the complexity of the problem. Dimensionality reduction comes at a cost: Fewer dimensions used implies less of the total variance in the data is being explained. Because of this, the cumulative explained variance ratio is extremely important for knowing how many dimensions are necessary for the problem. Additionally, if a signifiant amount of variance is explained by only two or three dimensions, the reduced data can be visualized afterwards.
In the code block below, you will need to implement the following:
good_data
to pca
.good_data
using pca.transform
, and assign the results to reduced_data
.log_samples
using pca.transform
, and assign the results to pca_samples
.# TODO: Apply PCA by fitting the good data with only two dimensions
pca = PCA(n_components=2, random_state=43)
pca.fit(good_data)
# TODO: Transform the good data using the PCA fit above
reduced_data = pca.transform(good_data)
# TODO: Transform log_samples using the PCA fit above
pca_samples = pca.transform(log_samples)
# Create a DataFrame for the reduced data
reduced_data = pd.DataFrame(reduced_data, columns = ['Dimension 1', 'Dimension 2'])
Run the code below to see how the log-transformed sample data has changed after having a PCA transformation applied to it using only two dimensions. Observe how the values for the first two dimensions remains unchanged when compared to a PCA transformation in six dimensions.
# Display sample log-data after applying PCA transformation in two dimensions
display(pd.DataFrame(np.round(pca_samples, 4), columns = ['Dimension 1', 'Dimension 2']))
A biplot is a scatterplot where each data point is represented by its scores along the principal components. The axes are the principal components (in this case Dimension 1
and Dimension 2
). In addition, the biplot shows the projection of the original features along the components. A biplot can help us interpret the reduced dimensions of the data, and discover relationships between the principal components and original features.
Run the code cell below to produce a biplot of the reduced-dimension data.
# Create a biplot
vs.biplot(good_data, reduced_data, pca)
Once we have the original feature projections (in red), it is easier to interpret the relative position of each data point in the scatterplot. For instance, a point the lower right corner of the figure will likely correspond to a customer that spends a lot on 'Milk'
, 'Grocery'
and 'Detergents_Paper'
, but not so much on the other product categories.
From the biplot, which of the original features are most strongly correlated with the first component? What about those that are associated with the second component? Do these observations agree with the pca_results plot you obtained earlier?
In this section, you will choose to use either a K-Means clustering algorithm or a Gaussian Mixture Model clustering algorithm to identify the various customer segments hidden in the data. You will then recover specific data points from the clusters to understand their significance by transforming them back into their original dimension and scale.
What are the advantages to using a K-Means clustering algorithm? What are the advantages to using a Gaussian Mixture Model clustering algorithm? Given your observations about the wholesale customer data so far, which of the two algorithms will you use and why?
Answer: K-Means has the advantages of be easy to interpret and can make goods clusters if both the distance functions and number o cluster are choosen correctly. The GMM's advantages are the flexibility to choose the component distribution, obtain a density estimation for each cluster and exists well-studied statistical inference techniques available. I'll use the GMM algorithms, because the statistical help to our prediction and I believe that for this data and purpose, it's better to use some model-based clustering.
Depending on the problem, the number of clusters that you expect to be in the data may already be known. When the number of clusters is not known a priori, there is no guarantee that a given number of clusters best segments the data, since it is unclear what structure exists in the data — if any. However, we can quantify the "goodness" of a clustering by calculating each data point's silhouette coefficient. The silhouette coefficient for a data point measures how similar it is to its assigned cluster from -1 (dissimilar) to 1 (similar). Calculating the mean silhouette coefficient provides for a simple scoring method of a given clustering.
In the code block below, you will need to implement the following:
reduced_data
and assign it to clusterer
.reduced_data
using clusterer.predict
and assign them to preds
.centers
.pca_samples
and assign them sample_preds
.sklearn.metrics.silhouette_score
and calculate the silhouette score of reduced_data
against preds
.score
and print the result.from sklearn import mixture
from sklearn.metrics import silhouette_score
# TODO: Apply your clustering algorithm of choice to the reduced data
n_components = 2
clusterer = mixture.GaussianMixture(n_components = n_components, random_state = 44)
clusterer.fit(reduced_data)
# TODO: Predict the cluster for each data point
preds = clusterer.predict(reduced_data)
# TODO: Find the cluster centers
centers = clusterer.means_
# TODO: Predict the cluster for each transformed sample data point
sample_preds = clusterer.predict(pca_samples)
# TODO: Calculate the mean silhouette coefficient for the number of clusters chosen
score = silhouette_score(reduced_data, preds)
print score
Report the silhouette score for several cluster numbers you tried. Of these, which number of clusters has the best silhouette score?
Answer:
| # clusters | Score |
|---|---|
| 2 | 0.447411995571 |
| 3 | 0.361193625039 |
| 4 | 0.298435230841 |
| 5 | 0.328904464926 |
| 10 | 0.325824425705 |
| 20 | 0.240609727557 |
| 50 | 0.295497507145 |
| 100 | 0.325141869116 |
| 250 | 0.291387775963 |
| 339 | 0.143005278551 |
After removing the outliers the best score was for 2 clusters.
Once you've chosen the optimal number of clusters for your clustering algorithm using the scoring metric above, you can now visualize the results by executing the code block below. Note that, for experimentation purposes, you are welcome to adjust the number of clusters for your clustering algorithm to see various visualizations. The final visualization provided should, however, correspond with the optimal number of clusters.
# Display the results of the clustering from implementation
vs.cluster_results(reduced_data, preds, centers, pca_samples)
Each cluster present in the visualization above has a central point. These centers (or means) are not specifically data points from the data, but rather the averages of all the data points predicted in the respective clusters. For the problem of creating customer segments, a cluster's center point corresponds to the average customer of that segment. Since the data is currently reduced in dimension and scaled by a logarithm, we can recover the representative customer spending from these data points by applying the inverse transformations.
In the code block below, you will need to implement the following:
centers
using pca.inverse_transform
and assign the new centers to log_centers
.np.log
to log_centers
using np.exp
and assign the true centers to true_centers
.# TODO: Inverse transform the centers
log_centers = pca.inverse_transform(centers)
# TODO: Exponentiate the centers
true_centers = np.exp(log_centers)
# Display the true centers
segments = ['Segment {}'.format(i) for i in range(0,len(centers))]
true_centers = pd.DataFrame(np.round(true_centers), columns = data.keys())
true_centers.index = segments
display(true_centers)
true_centers = true_centers.append(data.describe().ix['50%'])
true_centers.plot(kind = 'bar', figsize = (16, 4))
Consider the total purchase cost of each product category for the representative data points above, and reference the statistical description of the dataset at the beginning of this project. What set of establishments could each of the customer segments represent?
Hint: A customer who is assigned to 'Cluster X'
should best identify with the establishments represented by the feature set of 'Segment X'
.
Answer: Each segment makes reference to an average os establishments. That means if one establishment buy an amount of products wich makes him classified in one of segment, then he will spend the amount of his segments, approximately. So to predict the feature we must classify the establishment in one of these segments.
In segment 0 the Fresh and Frozen is well above the average while the other features is below. In segment 1 Milk, Grocery and Detergent_Paper are above the average (Grocery is much more above the average) and the other are below. Thus with characteristics looks like the segment 0 represent the Restaurant and segment 1 is the set of Hotel and Cafe.
For each sample point, which customer segment from Question 8 best represents it? Are the predictions for each sample point consistent with this?
Run the code block below to find which cluster each sample point is predicted to be.
print "Clusters"
display(true_centers)
print "Sample Data"
display(samples)
# Display the predictions
for i, pred in enumerate(sample_preds):
print "Sample point", i, "predicted to be in Cluster", pred
print 'The distance between sample point {} and center of cluster {}:'.format(i, pred)
print (samples.iloc[i] - true_centers.iloc[pred])
Answer:
With the distance of each point we can see that:
Now, looking to distance the Cluster 1 predicted samples of each feature Milk and Delicatessen seems to be consistent with the category in the sample, but predicte wrong in both cases for Fresh. Cluster 2 was consistent with Milk and Detergents_Paper, but predicted wrong for Fresh and Delicatessen).
The prediction seems to be consistent.
In this final section, you will investigate ways that you can make use of the clustered data. First, you will consider how the different groups of customers, the customer segments, may be affected differently by a specific delivery scheme. Next, you will consider how giving a label to each customer (which segment that customer belongs to) can provide for additional features about the customer data. Finally, you will compare the customer segments to a hidden variable present in the data, to see whether the clustering identified certain relationships.
Companies will often run A/B tests when making small changes to their products or services to determine whether making that change will affect its customers positively or negatively. The wholesale distributor is considering changing its delivery service from currently 5 days a week to 3 days a week. However, the distributor will only make this change in delivery service for customers that react positively. How can the wholesale distributor use the customer segments to determine which customers, if any, would react positively to the change in delivery service?
Hint: Can we assume the change affects all customers equally? How can we determine which group of customers it affects the most?
Answer:
The A/B can be applyed where the hyphotesis is that the delivery service's change will affect positively the establishment. For the versions A and B can sampling (~5% of each segment for example) and get the feedback to calculate the increase (or decrease). Some statisticals actions like sampling correctly the segments and other stuff should be taken to make the test more accurated. In the end the distributor will have information about acceptance and will decide if apply the change to each segment or not.
Additional structure is derived from originally unlabeled data when using clustering techniques. Since each customer has a customer segment it best identifies with (depending on the clustering algorithm applied), we can consider 'customer segment' as an engineered feature for the data. Assume the wholesale distributor recently acquired ten new customers and each provided estimates for anticipated annual spending of each product category. Knowing these estimates, the wholesale distributor wants to classify each new customer to a customer segment to determine the most appropriate delivery service.
How can the wholesale distributor label the new customers using only their estimated product spending and the customer segment data?
Hint: A supervised learner could be used to train on the original customers. What would be the target variable?
Answer:
Once the segments is successfuly defined, a supervised learn model can use the establishments' segments as labels to learn and predict the segments for new establishment. Once the new establishment is labeled, the distributor can predict the estimated product spending for each feature.
At the beginning of this project, it was discussed that the 'Channel'
and 'Region'
features would be excluded from the dataset so that the customer product categories were emphasized in the analysis. By reintroducing the 'Channel'
feature to the dataset, an interesting structure emerges when considering the same PCA dimensionality reduction applied earlier to the original dataset.
Run the code block below to see how each data point is labeled either 'HoReCa'
(Hotel/Restaurant/Cafe) or 'Retail'
the reduced space. In addition, you will find the sample points are circled in the plot, which will identify their labeling.
# Display the clustering results based on 'Channel' data
vs.channel_results(reduced_data, outliers, pca_samples)
How well does the clustering algorithm and number of clusters you've chosen compare to this underlying distribution of Hotel/Restaurant/Cafe customers to Retailer customers? Are there customer segments that would be classified as purely 'Retailers' or 'Hotels/Restaurants/Cafes' by this distribution? Would you consider these classifications as consistent with your previous definition of the customer segments?
Answer:
The clustering works relatively well. There is segments that would be classified purely as 'Reatailers' (e.g. 1) and other as 'HoReCa' (e.g. 2). I think that these classifications can be improved, once the segments have classified the establishments poorly.
Note: Once you have completed all of the code implementations and successfully answered each question above, you may finalize your work by exporting the iPython Notebook as an HTML document. You can do this by using the menu above and navigating to
File -> Download as -> HTML (.html). Include the finished document along with this notebook as your submission.


|
SmartFactory_SorticRoboter
|
The rfid reader controll class controlls the rfid sensor. More...
#include <RfidReaderCtrl.h>
Classes | |
| struct | Package |
| Package struct holds all information of the package. More... | |
Public Types | |
| enum | Event { Event::NoEvent, Event::NoPackageAvailable, Event::Error } |
| Enum class holds all possible Events. More... | |
Public Member Functions | |
| RfidReaderCtrl (RfidReaderCtrl::Package *packagePtr) | |
| Construct a new Rfid Reader Ctrl object. More... | |
| ~RfidReaderCtrl () | |
| Destroy the Rfid Reader Ctrl object. More... | |
| Event | getPackageInformation () |
| get the package information on the rfid transponder More... | |
| byte * | getReadBlockMatrix () |
| Get the Read Block Matrix object. More... | |
Private Member Functions | |
| Event | readBlock (byte blockNumber, byte *arrayAddress) |
| read block on rfid transponder More... | |
| void | parseInformationToStruct () |
| parse package information to package struct More... | |
Private Attributes | |
| byte | readBlockMatrix [16][18] |
| matrix to store all bytes from the rfid transponder More... | |
| byte | buffersize = 18 |
| size of all pages + 2 More... | |
| MFRC522::StatusCode | status |
| instance of status code More... | |
| MFRC522 * | pReader = new MFRC522(RFIDDETECTOR_SDA, RFIDDETECTOR_RST_PIN) |
| instance of mfrc sensor librarie More... | |
| MFRC522::MIFARE_Key | key |
| Package * | pPackagePtr = nullptr |
| pointer to the storage place of the package struct More... | |
The rfid reader controll class controlls the rfid sensor.
|
strong |
| RfidReaderCtrl::RfidReaderCtrl | ( | RfidReaderCtrl::Package * | packagePtr | ) |
Construct a new Rfid Reader Ctrl object.
| RfidReaderCtrl::~RfidReaderCtrl | ( | ) |
Destroy the Rfid Reader Ctrl object.
| RfidReaderCtrl::Event RfidReaderCtrl::getPackageInformation | ( | ) |
get the package information on the rfid transponder
|
inline |
Get the Read Block Matrix object.
|
private |
parse package information to package struct
|
private |
read block on rfid transponder
| blockNumber | - byte |
| arrayAddress | -byte* |
|
private |
size of all pages + 2
|
private |
create a MIFARE_Key struct named 'key', which will hold the card information
|
private |
pointer to the storage place of the package struct
|
private |
instance of mfrc sensor librarie
|
private |
matrix to store all bytes from the rfid transponder
|
private |
instance of status code


Ni
About
Core ideas
Alphabet
Compiler
Generally, Ni compiler workflow can be described as:
SourceCode ~~ Lexer ~~> TokenStream ~~ Parser ~~> AST
License
Ni Programming Language is licensed under the terms of the MIT license.
Generally, Ni compiler workflow can be described as:
SourceCode ~~ Lexer ~~> TokenStream ~~ Parser ~~> AST
Ni Programming Language is licensed under the terms of the MIT license.


My Dating Website
Admin
Interests
In-door Interests
checked
TV
checked
Puzzles
checked
Movies
checked
Reading
checked
Cooking
checked
Playing cards
checked
Board games
checked
Video games
Out-door Interests
checked
Hiking
checked
Walking
checked
Biking
checked
Climbing
checked
Swimming
checked
Collecting
Next >


Tools used for ECProduct¶
Package Management Tool
pipenv
https://github.com/pypa/pipenv
The packages used in this project can be found in Pipfile in the root directory of this project.
Document Management Tool
Task Management Tool
ToDoList
Unit Test Tool
Webpage Crawler Tool
Scrapy
Requests
Code Version Management Tool
Database Tool
MariaDB


Tips for a perfect shot of sunrise and sunset
28 May 2015A beautiful sunrise or sunset is the most amazing landscape to do justice with your camera. The first and the foremost Setting you need to do is changing the white balance of your camera to daylight from automatic.
Setting up your camera right
-
Set the focus to manual, focus by hand and keep the camera still.
-
If available use a tripod, and view your composition in it.
-
Switch to manual exposure.
-
Expose for the sun and the sky, and then move to your subject as underexposure gives richer colors.
Aiming for a perfect composition
-
Make sure that you have enough time to check and test for various compositons before the climax!
-
Look for clouds. Blank skies will often give less interesting sunrises or sunsets because there is nothing for the light from the rising or setting sun to illuminate.
-
Watch the Horizon. Don’t put it in the middle of the photo. As the ground is usually dark so you end up with a photo that is half black, use the sensor completely and capture the glorious sky.
-
Look for silhouettes. Get down low to put some flowers in the composition, find a tree or a tree branch and it to your frame which would work as a silhouette. Remember not to put these things in the middle of the picture, they are best suited at bottoms, corners or sides.
-
Keep Shooting before and after sunset. As the color of the sky keeps changing and you can never predict it. You never know when the best shot will occur.
-
Turn around. Sometimes the best picture is just behind you, lit by the golden color of the sunrise or sunset.
Some words of wisdom
-
As there is too much contrast for your camera to capture, you will either end up with detail in the sky and a dark foreground, or detail in the foreground and an overexposed sky. If you choose an exposure so that the foreground is slightly dark, and shoot in raw mode, you can recover much of the shadow detail when you process the image.
-
You should also make sure that the shutter speed set by the camera is fast enough for you to hand hold the camera steady enough to avoid camera shake. If the shutter speed drops below 1/30sec then you’ll need to put the camera on a tripod, or increase the ISO setting to 200 or 400.
-
Zoom in all the way or use your strongest telephoto lens and start looking around the sunrise or sunset along the horizon (Do not stare into the sun through your camera, as this can damage your eyes. You may use Live View with your camera, and stare at the sun on your LCD). You will often find amazing color and tonalities
Have fun with shooting the sunrise and the sunset!