This table contains one of the 43 entries for Calmodulin in the UniProt database, as well as the Calmodulin-like proteins that contain EF Hands, and some of the proteins known to bind either Ca2+-Calmodulin or Apocalmodulin. Links are provided to view the original protein entries. The proteins used to construct the signature for IPR002048 are given with links to the relevant databases.
|
|
|
UniProt
|
Protein name |
Organism |
Function |
IPR002048 signatures |
|
Calmodulin |
|
Calmodulin |
Homo
sapiens |
Multifunctional |
||
|
Calmodulin-like proteins |
|
Calcium-regulated photoprotein: aequorin |
Aequorea victoria
Jellyfish |
Bioluminescence
photoprotein |
||
|
|
|
Calcium-binding
protein: CABP |
Entamoeba histolytica
|
Transduction of secondary messages |
||
|
|
|
Calcineurin B subunit isoform 1 |
Homo sapiens |
Multifunctional |
||
|
|
|
Calmodulin-related protein NB-1 (CLP) |
Homo sapiens
|
Signal
transduction |
||
|
|
|
Calcium vector
protein: CAVP |
Branchiostoma lanceolatum
Common lancelet |
|
||
|
|
|
Guanylyl cyclase activating protein 3 (GCAP 3) |
Homo sapiens |
Photoreceptor recovery |
||
|
|
|
Calcium and integrin-binding protein 1 (Calmyrin; KIP; CIB) |
Homo sapiens |
Cell growth |
||
|
|
|
Myosin-2 light chain |
Saccharomyces cerevisiaeBaker's yeast |
MYO2P stabilisation |
||
|
|
|
Myosin essential light chain, striated adductor muscle (E-LC) |
Aequipecten irradiansBay scallop |
Calcium regulation in muscle |
||
|
|
|
Myosin regulatory light chain, striated adductor muscle (R-LC) |
Aequipecten irradiansBay scallop |
Calcium regulation in muscle |
||
|
|
|
Myosin regulatory light chain cdc4 |
Schizosaccharomyces pombeFission yeast |
Cytokinesis |
||
|
|
|
Neurocalcin delta |
Homo sapiens
|
Regulation of Rhodopsin phosphorylation |
|
|
|
|
|
Neuronal calcium sensor 1
(Frequenin) |
Homo sapiens |
Regulation of GPCR phosphorylation |
||
|
|
|
Recoverin |
Homo sapiens |
Photoresponse |
||
|
|
|
Sarcoplasmic calcium-binding protein: SCP |
Perinereis
vancaurica tetradentata Sandworm |
|
||
|
|
|
Troponin
C, slow skeletal and cardiac muscles |
Homo sapiens |
Regulation of striated muscle contraction |
||
|
Ca2+-Calmodulin-binding proteins |
Kinases |
Peripheral
plasma membrane protein CASK (EC 2.7.1.-) |
Homo sapiens
|
|
|
|
|
|
|
Elongation factor 2 kinase (EC 2.7.1.-) |
Homo sapiens
|
|
|
|
|
|
|
Calcium/calmodulin-dependent
protein kinase type I (EC <IP_ADDRESS>) (CaM kinase I) |
Homo sapiens |
Phosphorylates synapsin I |
|
|
|
|
|
Calcium/calmodulin-dependent protein kinase type IV catalytic chain (EC <IP_ADDRESS>) (CaM kinase IV) |
Homo sapiens |
Ser/Thr protein kinase |
|
|
|
|
|
Calcium/calmodulin-dependent protein kinase type II alpha chain (EC <IP_ADDRESS>) (CaM kinase II) |
Homo sapiens |
Long-term potentiation and neurotransmitter release |
|
|
|
|
|
Myosin light chain kinase, smooth muscle and non-muscle isozymes (EC <IP_ADDRESS>) |
Homo sapiens |
Smooth muscle contraction |
|
|
|
|
|
Phosphorylase B kinase alpha regulatory chain, skeletal muscle isoform |
Homo sapiens |
Glycogen metabolism |
|
|
|
|
Phosphatases |
Calcineurin B subunit isoform 1 |
Homo sapiens |
Multifunctional |
|
|
|
|
|
Ca(2+)/calmodulin-dependent protein kinase phosphatase (EC <IP_ADDRESS>) (CaMKPase) |
Homo sapiens |
Promotes apoptosis |
|
|
|
|
|
Serine/threonine protein phosphatase 2B catalytic subunit, alpha isoform (EC <IP_ADDRESS>) (CAM-PRP) |
Homo sapiens
|
Calcineurin
activation |
|
|
|
|
Second messenger signalling proteins |
Cysteinyl
leukotriene receptor 2 (GPCR) |
Homo sapiens
|
Inflammatory
response |
|
|
|
|
|
CYA1_HUMAN
(Q08828)
|
Adenylate cyclase, type I (EC <IP_ADDRESS>) |
Homo sapiens |
Regulatory processes in CNS, including long-term memory |
|
|
|
|
Nitric-oxide synthase, brain (EC <IP_ADDRESS>) |
Homo sapiens
|
Produces
nitric oxide, which may act as a
neurotransmitter |
|
|
|
|
|
Inositol-trisphosphate 3-kinase A (EC <IP_ADDRESS>) |
Homo sapiens
|
CNS
function |
|
|
|
|
Cytoskeletal and muscle proteins |
Caldesmon |
Homo sapiens
|
Actin and
myosin binding |
|
|
|
|
|
Dystrophin |
Homo sapiens
|
Anchoring cytoskeleton
to plasma membrane |
|
|
|
|
|
Myristoylated alanine-rich C-kinase substrate (MARCKS) |
Homo sapiens
|
Actin
cross-linking |
|
|
|
|
|
Alpha-1-syntrophin |
Homo sapiens
|
Organisation
of membrane proteins |
|
|
|
|
|
Spectrin alpha chain, erythrocyte |
Homo sapiens
|
Maintenance
of shape and composition of erythrocyte plasma membrane |
|
|
|
|
|
Spectrin alpha
chain, brain |
Homo sapiens
|
Cytoskeletal
movement at plasma membrane |
|
|
|
Apocalmodulin-binding
proteins |
Neuroproteins |
Glutamate
decarboxylase, 67 kDa isoforms (EC <IP_ADDRESS>) |
Homo sapiens
|
Catalyzes
production of neurotransmitter GABA |
|
|
|
|
|
Neuromodulin |
Homo sapiens
|
Nerve
growth and CaM storage |
|
|
|
|
|
Neurogranin |
Homo sapiens
|
Synaptic
development and remodelling |
|
|
|
|
|
Brain-specific polypeptide PEP-19 |
Homo sapiens
|
|
|
|
|
|
Receptors |
Inositol 1,4,5-triphosphate receptor |
Xenopus laevis
African
clawed frog |
Endoplasmic
reticulum calcium release |
|
|
|
|
Cytoskeletal
and muscle proteins |
Ras GTPase-activating-like protein IQGAP1 |
Homo sapiens
|
Regulates
the actin cytoskeleton |
|
|
|
|
|
cGMP-dependent protein kinase 1, alpha isozyme (EC <IP_ADDRESS>) |
Homo sapiens
|
Smooth
muscle relaxation |
|
|
|
|
|
Myosin Ia |
Homo sapiens
|
Directing
movement of organelles along actin filaments |
|
|
|
|
|
Myosin Id |
Rattus norvegicus
Rat |
Intracellular
movement |
|
|
|
|
Second
messenger signalling proteins |
Nitric oxide
synthase, inducible |
Rattus norvegicus
Rat |
Produces nitric
oxide, which has diverse functions |
|
Previous: What InterPro Tells Us


|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface SAMLBrowserProfile
Interface to the SAML 1.x browser profiles. The SAML 1.x profiles are destination/SP-side only, thus only "acceptance" of the profile message is modeled.
| Nested Class Summary | |
|---|---|
static interface |
SAMLBrowserProfile.ArtifactMapper
Interface provided by SAML application to enable SAML 1.x artifacts to be resolved. |
static class |
SAMLBrowserProfile.BrowserProfileRequest
Wrapper for the pieces of the profile request provided to the profile provider |
static class |
SAMLBrowserProfile.BrowserProfileResponse
Wrapper for the pieces of the profile response available to the caller |
| Field Summary | |
|---|---|
static String |
PROFILE_ARTIFACT_URI
|
static String |
PROFILE_POST_URI
|
| Method Summary | |
|---|---|
SAMLBrowserProfile.BrowserProfileRequest |
receive(javax.servlet.http.HttpServletRequest requestContext)
Processes an HTTP request into a browser profile request. |
SAMLBrowserProfile.BrowserProfileResponse |
receive(StringBuffer issuer,
SAMLBrowserProfile.BrowserProfileRequest requestContext,
String recipient,
ReplayCache replayCache,
SAMLBrowserProfile.ArtifactMapper artifactMapper,
int minor)
Processes an incoming POST or Artifact profile response. |
| Field Detail |
|---|
static final String PROFILE_ARTIFACT_URI
static final String PROFILE_POST_URI
| Method Detail |
|---|
SAMLBrowserProfile.BrowserProfileRequest receive(javax.servlet.http.HttpServletRequest requestContext) throws UnsupportedProfileException
requestContext
- The HTTP request from the client
UnsupportedProfileException
- Raised if the HTTP request data cannot be successfully parsedSAMLBrowserProfile.BrowserProfileResponse receive(StringBuffer issuer, SAMLBrowserProfile.BrowserProfileRequest requestContext, String recipient, ReplayCache replayCache, SAMLBrowserProfile.ArtifactMapper artifactMapper, int minor) throws SAMLException
issuer
- A buffer in which to store the issuer of the security
token being processed, to assist in responding to errorsrequestContext
- The HTTP request containing the profile responserecipient
- The HTTP endpoint to which the response was deliveredreplayCache
- An org.globus.opensaml11.saml.ReplayCache interface to enable replay detectionartifactMapper
- An ArtifactMapper interface to support artifact lookup/mapping
(may be null if only POST is supported)minor
- The minor version to support
SAMLException
- Raised if an error occurs during profile processing
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


THE CABLE GUY A film review by Bryan MacBurney Copyright 1996 Bryan MacBurney
Jim Carrey Matthew Broderick
Well, CNN is *wrong* about this movie.1
And so is TIME for that matter.2
This "ill-conceived flick" as Carol Buckland calls it not a bad film and the "stupid pieties" that stick in Richard Schickel throat are much more a feature than a flaw. It's apparent this movie is going to struggle with the misfortune of people just plain not getting it. It's evident why not everyone will take to it, but taste is not art, as has been so eloquently said, and the bad taste some reviewers find in their mouth may be due more to their dental hygiene than any cinematic deficiencies.
The Cable Guy is a fine film and hits squarely its target as a dark comedy with a just-kidding wry smile.
Jim Carrey plays a whacked out cable guy named Chip whose desperation for a friend draws him inexorably to Steven (Matthew Broderick), a likable architect newly turfed out by his girlfriend after he had the audacity to propose to her. While Chip hooks up the cable in Steven's new apartment, he drops surprisingly sage advice about getting back the girl while at the same time weaseling into Steven's post hookup life by not taking a polite no for an answer.
While Steven thus armed makes great strides to reaquire his love's affections, Chip takes more direct action to eliminate Steve's competition. As the true nature of Chip's favours dawns on Steven, his sweet fortune turns sour then to poison when he demands that Chip gets out of his life.
But Chip is already locked into a Fatal Attraction and benevolence turns to malevolence as Chip seeks revenge to punish Steven's betrayal as a friend. Chip's plan is executed with the ease and confidence of an evil Ace Ventura and Steve is fired, thrown in jail and alienated from his family before making the bone chilling discovery that the life of the woman he loves is in the hands of his jealously insane "friend".
The film's action climax drives home the grave and revolutionary message
that
The movie redeems its outlandishness with tongue firmly in cheek but still teases us with a "just kidding... or am I?" overall mood.
Young children won't take to this film like they did to Ace Ventura: Pet Detective, and I'm sure more than a few adults will not find it to their tastes as well. Carrey's first Ace had me laughing out loud from start to finish, while his latest work evokes chuckles that only grow as they simmer in my belly. A different menu, but good food is still good food.
1.http://www.cnn.com/SHOWBIZ/9606/13/cable.guy/ 2.http://pathfinder.com/time/magazine/domestic/1996/960617/cinema.cableguy.html
posted courtesy of<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


jason.Age++; Assert.That(jason.Age == 2^5 == 0x20 == 0b100000); 9/1/2010, 9:36:20 AM Favs: 0 Retweets: 0 link


Courtrooms locked up over JUSAG Strike action
by Joyce Danso, GNA
Accra Nov. 13, GNA - Judicial Service Staff Association of Ghana (JUSAG) on Wednesday commenced its indefinite strike with the various courts closed to the public.
JUSAG on Tuesday announced a nationwide strike over nonpayment of their reviewed salaries approved by the Judicial Service and forwarded to the Ministry of Finance due them.
A visit by the Ghana News Agency to some lower courts showed that the court rooms had been locked with red banner hanging on them.
Private and judicial security men were also seen at post. Some litigants who did not know about the strike action were found seated at various locations.
Kwame Asumadu a trader said he came to court for his case to be heard but the court rooms have been locked.
Asumadu said if he had known about the strike action he would not have turned up in the court.
Meanwhile the Supreme Court sat over some cases today.
Last week, JUSAG announced a nationwide strike over nonpayment of the reviewed salaries by the Ministry of Finance.
It therefore embarked on the indefinite strike commencing today.
Meanwhile the National Labour Commission (NLC) has described the JUSAG strike action as illegal.
GNA


Use cleopatra custom alerts styles for actions , notifcations etc.
so far there's just 3 type of alerts feel free to submit a pull request


Email registration required to claim a county. Register your email to proceed.
An active county claim is required to county lockdown information. Claim a county to proceed.
Please indicate whether this county is under a lockdown and provide any additional relevant information.
The below information was submitted by the last county claim owner. Please review and update the information as needed.


cb
Portfolio
Your browser doesn't support canvas. Boo hoo!
Your browser doesn't support canvas. Boo hoo!


var currentRootNode: TreeNode<Person>?
The root node of the tree currently being displayed. This is null if no tree is being displayed.


ChargeStatus
@objc
public enum ChargeStatus : Int, Decodable
Charge status enum.
- initiated: Charge is initiated.
- inProgress: Charge is in progress and is waiting for user action (3d secure, OTP etc.)
- cancelled: Charge cancelled.
- failed: Charge failed.
- declined: Charge declined.
- restricted: Charge restricted.
- captured: Charge captured.
- void: Charge voided.
-
Charge is initiated.
Declaration
Swift
case initiated
-
Charge is in progress and is waiting for user action (3d secure, OTP etc.)
Declaration
Swift
case inProgress
-
Charge cancelled.
Declaration
Swift
case cancelled
-
Charge failed.
Declaration
Swift
case failed
-
Charge declined.
Declaration
Swift
case declined
-
Charge restricted.
Declaration
Swift
case restricted
-
Charge captured.
Declaration
Swift
case captured
-
Charge voided.
Declaration
Swift
case void
-
Declaration
Swift
public init(from decoder: Decoder) throws


Dear {{ user.first_name }},
Thank you for registering a student with Maths on Mars!
Login details for {{ student_first_name }} {{ student_last_name }} are provided below.
Username: {{ student_username }}
Password: {{ student_pass }}
Sincerely,
The Maths on Mars Team


You can send Merit to anyone in the world, whether they have a wallet or not.
You'll just create a link that you can send via chat or email.
You can trade it for other currencies like US Dollars, Euros, or Bitcoin.
1 MRT = $ (Coming Soon)
Soon, Merit will have a published exchange rate that changes with the market.
Merit is decentralized. This wallet stores your merit locally with cutting-edge security.
Only you have acccess to your keys. Not even the Merit Foundation can access your Merit.


Image URL:
Alternate Text:
Layout
Spacing
Alignment:
Not set
Left
Right
Texttop
Absmiddle
Baseline
Absbottom
Bottom
Middle
Top
Horizontal:
Border Thickness:
Vertical:
OK
Cancel


A pixie cut is a short hairstyle generally short on the back and sides of the head and slightly longer on the top and very short bangs. It is a variant of a crop. The name is derived from the mythological Pixie, though the actual hairstyle was popularized by Disney's Fairies Franchise, especially Tinker Bell.
A French braid also called French plait and Tresse Africaine is a type of braided hairstyle. The French braid is a hairstyle that originated in North Africa and later adopted in France. The misnomer "French" may possibly be traced back to an 1871 short story from Arthur's Home Magazine.
Short hair exudes boldness, confidence, individuality and style. Straight hair is very modern-looking, chic, clean and neat. It shows off the architecture of the haircut, hiding nothing. Combined, this kind of haircut speaks beauty and power.
Red is the color of extremes. It's the color of passionate love, seduction, violence, danger, anger, and adventure. Red has been known for the color of fire and blood and most of red's symbolism today arises from its powerful associations in the past
Multi-Color Hair Ideas (if you are brave enough). We love to put different layer of colors onto your hair. Are you brave enough to be willing to take a risk? Or maybe just try on something new that nobody else has the gut to do so. on.
Being in the field for years, we are please to provide you the best experience you will ever had
With our app being up to date, we intend to provide the most modern-looking that you have ever dream of
With more than 40 locations all over the states, there's no reason for you to ever have a problem getting what you need
You will get points for every time you have used any services with us, including purchasing through the app or in store
Get 5% discount everytime you checking in at any locations there are. And if that's not enough, have you seen our reward system
We have received multiple feedbacks for being able to provide great experience. We love to hear from you!


Hi there! Currently, I am a Software Engineer at MathWorks India Pvt. Ltd. , working in the field of Image
Processing, Computer Vision and Deep learning. I've completed my B.Tech in Computer Science and Engineering from
National Institute of Technology, Durgapur. Apart from my industry exposure, I like
to contribute in academic research projects. My current research interest lies in Applied ML and DL in Healthcare, Operations and Marketing Management domain.
During this period, I Worked as an intern in the EDG Hyderabad team of Mathworks.
Research Assistant | Wichita State University May '21 - July '21
I've been working under supervision of
Dr. Ajita Rattani on the project of deep fakes detection using CNN models(Transferlearning with EfficientNet and ResNet-50) on CelebDF dataset using tensorflow and keras.
I've worked under the supervision of
Dr. Sriparna Saha on a bioinformatics based project where I’ve implemented a hybrid multimodal I’ve designed and developed a deep Multi-modal (sequential + structural + gene ontology) Protein-protein Interaction
framework using Vision Transformer(ViT) and SeqVec, a ELMo based language model, to classify a pair in one of the two labels - Interacting or Non-interacting . Using transfer learning with vit_b16 model , we
achieved 98.03% accuracy on Human PPI dataset and 98.75% accuracy on SC PPI dataset.
Working under the supervision of Dr. Anurag Singh at the Communication Lab. We are studying EEG based emotion recognition using deep learning and machine learning.
Undergraduate Research Assistant | NIT Durgapur Jan '21 - Jun '21
Working under the supervision of
Dr. Tandra Pal on the project "AI in Education Focus: Children with learning disability". We are building a hybrid complex CNN+LSTM model to classify the motor imagery from EEG Dataset taken from PhysioNet.
Will Update Soon!
This template is a modification to Jon Barron's website. Find the source code to my website here.


Colleges and Universities - Czech Republic
(C)Copyright 1995,1996 Christina DeMello. Reproduction and distribution are
permissible for non-profit purposes only, but no changes are to be
made to this document without the author's written consent.
Please send additions, corrections, and comments to<EMAIL_ADDRESS>Please
give me a few days to respond as I no longer have a
direct net connection at work every day. Also, this list may be
updated more quickly than I can respond personally to email.
Last modified: Thu Jul 11 20:53:17 1996
- Charles University, Prague
- Czech Technical University, Prague
- J. E. Purkyne University
- Liberec University of Technology
- Masaryk University
- Mendel University of Agriculture and Forestry
- Palacky University
- Palacky University Medical School
- Prague Institute of Chemical Technology
- Silesian University
- South Bohemia University
- Technical University of Brno
- University of Economics, Prague
- University of Education Hradec Kralove
- University of Ostrava
- University of Pardubice
- University of West Bohemia
Return to Top Level
<EMAIL_ADDRESS><EMAIL_ADDRESS>Last updated:
Mon Jul 15 00:41:37 PDT 1996


With the development period of GSoC 2019 well under way, a number of new and improved Creative Commons apps are navigating their way to production and worldwide reception. With all this development comes one obvious challenge: consistency (not to mention a number of other challenges such as internationalisation and modularity).
The idea of a design system, to have a collection of elements and components designed cohesively to be used across the body of applications of a particular brand, is not new or even remotely my original. In fact, every organisation with more than one application should have a design system. My last project was backed by its own component library and it saved my team countless hours of bikeshedding and repetitive design iterations.
Contributing to CC Search in the period before GSoC made me realize the numerous areas of the project that would benefit from a pre-built library and prompted the proposal that eventually became my project. I'll cite the same example that I used in my proposal because it so clearly shows a problem and its solution.
Consider for example the header and footer. All CC apps have a header and a footer developed along the lines of the homepage, albeit to varying extents. However, due to the lack of a common component, every app develops its own and they end up looking like these. Calling them inconsistent would be an understatement.
The footer on the CC homepage
The footer in the CC Search app
The footer on the CC Open Source site
Enter CC Vocabulary
CC Vocabulary solves precisely that. It is a set of components, elements and patterns that unite Creative Commons' applications in terms of look and feel, while encapsulating and abstracting basic functionality that need not be reinvented per-app.
Now CC Vocabulary provides a footer (ready to use today!) that can be used on all three of the above sites, conveying the same information in the same consistent layout.
"What about the different contents in the footers?", you ask.
As for the different content in all three footers, the third column is 100% customisable. So whether crediting the developers of the website, attributing the icon artists or licensing the content therein, the footer just works. And when it comes to translations, Vocabulary has you covered. Lastly, to embody the colorful world of creativity, every CC Vocabulary component can be colored. So from the blue header of CC Search to the orange one on the homepage, there's a component for everybody.
'Nuff said.
The footer provided by CC Vocabulary
The footer provided by CC Vocabulary customised for the CC Open Source site
The footer provided by CC Vocabulary in Hindi
Let's get to the nerdy stuff, the development details. Here's the good, the bad and the ugly of Vue development and also how all three adjectives fail to embody the one constant feeling: challenging!
The good
As you've already seen, the prospects of the library in making the CC codebase modular, cleaner and i18n-ready are huge. And being written in Vue has a ton of perks, not the least of which is a future-ready, progressive framework to back the project!
Working in JavaScript is very different from a Python project. For instance, I had literally very little need for Docker containers in the first place as npm modules are local unlike pip, which needs Pipenv or similar to add sanity to package management.
Development in Vue is even more different, and even even more so when building a
Webpack-based app with Vue CLI, which takes a different approach compared to
React CRA. For one, there is no option to eject! So any changes to the Webpack
config have to be submitted via an object in vue.config.js
and deep merged
with the existing config.
Then there are plugins. Plugins for Vue CLI are few and far in between but those
that are work extremely well and integrate with the Vue UI, a web based
management tool for Vue projects. Both Vue Styleguidist, the plugin used to
generate the styleguide and Vue i18n, the plugin used to provide translations
work seamlessly with Vue and, with the exception of having to manually enable
i18n in Styleguidist by extending the renderer in styleguide.config.js
(more
on that later), with each other.
Coming from a React background, the helpfulness of the Vue framework contrasts starkly with the cold stony world I was accustomed to. "I'm beginning to enjoy JavaScript", a sentence I never thought I'd say.
So by the end of week one, I had a styleguide with a Heading component and a Docker setup to boot. I also had a ridiculously large smile from all the learning that I did. By the end of three weeks, I was the proud developer of a world-class web component framework that was beginning to have some real footing, something I had not even dreamed possible!
Pro-tip: If you haven't seen or experienced Vue UI, you should. It will change your opinion of Vue for the better, as it did mine.
[user cc-vocabulary]$ vue ui
The bad
In week 2, I had to develop a number of components and incorporate design
tokens, a practice with origins at Salesforce. Folks wiser than myself at
Salesforce came up with the idea of using design tokens to keep constants out of
the design and frontend development process, abstracting the actual nitty gritty
of colors and border radii behind semantic names such as blue_light
and
radius_small
.
Hardcoding every single color and every single dimension in YAML files manually
from little to no reference at all was a very low point in an already low week.
The reason behing this pain is CC's color
palette which provides all values
in hex #abcdef
for the close to forty colors in the palette. Were they HSL
values, it would have been extremely easy to shade the colors. If any brand aims
to redo its colors, I would suggest using HSL wherein HS is used to determine a
color and L is varied to determine its shades.
Another strange decision taken by Vue is that Vue components use a Single File
Component scheme making use of .vue
files that Webpack processes using the
vue-loader
package. Now Styleguidist and Vue i18n both add their own tags to
the mix such as <docs>
and <i18n>
making one component file go to hundreds
or even thousands of lines! In a world that taught us to decouple style from
functionality, this mushing of languages did not sit too well with me and I kept
contemplating what reasons would have prompted the developers to take this step.
Also Styleguidist comes with a very bland default style so to make it barely presentable, one needs to override a lot of CSS styles that have absurdly high specificities.
Pro-tip: This catastrophe could have become ugly were it not for the
benevolent src
attribute supported by some Vue tags. I had known this for
merely seconds when I found myself breaking my components down using
<style scoped lang="stylus" src="./Component.styl"></style>
to store CSS separately and
<i18n src="./Component.json"></i18n>
to keep translations outside of my code, thus making the file much more
manageable. There is still no way to split the JS <script>
from the HTML
<template>
without losing all autocompletion features provided by the IDE.
The ugly
Incorporating translations into the project was the weirdest. With two or three commands maximum, the Vue website had translations enabled and was working perfectly. But the Styleguide would just not render translations at all!
It took close to three days to even figure out why. Once I misinterpreted the cause of the error, broke the entire styleguide and had to
[user cc-vocabulary]$ git reset --hard HEAD
to even get things to work. "Use VCS.", proved one again.
Finally I had to register the i18n plugin separately for the styleguide, install the middleware on all components and add a locale selector to every preview box across the styleguide by extending and overriding the preview component. The good folks at Styleguidist had provided for that functionality, and it revealed itself to me as I was at the very brink of losing my mind.
To add insult to injury, translations have to be done by hand. I know this is how the world of i18n works but it would be really magical if we had a service to do the translations automatically. Now I can write in two languages, and will translate components to the other one as best as I can. But I urge you to contribute too. Together we can make CC components globally local.
Languages that follow an alternate orientation, such as top-to-bottom or right-to-left would pose significant difficulty to implement, having to manually render everything in an opposite or perpendicular direction gives me the chills. It's gonna be ugly.
Pro-tip: I learned that flags are a terrible way to represent language. Many languages are spoken more widely outside countries of origin (think English) and many countries are home to several languages (think India). Many large websites make the mistake of using flag alongside language names and that seems so stupid in retrospect.
Also one should use the native name of the language in the selector (like हिन्दी) and the universal translation icon (or some stylistic variant thereof).
TL;DR
The project which takes out a lot of the hard work from frontend development has its fair share of hard work cut out for itself. The challenges ahead are plentiful, but the solutions they inspire are diamonds in their own right. It is safe to say that I can attribute my complete understanding of Vue, i18n, component libraries, styleguides and design systems to CC Vocabulary.
Before we move on, let me tell you the bad and the ugly are not the norm. The good was the major portion of the project.
Future
So as you can see CC Vocabulary represents a huge leap forward for the web-facing Creative Commons. I can't wait to see the new generation of apps by Creative Commons, powered by CC Vocabulary.
CC Vocabulary is out now, with its code, design and translations on GitHub and a live styleguide hosted on GitHub pages. Please check it out and join the discussions. Since it is too early to even call it a beta, your feedback is crucial in shaping its future and with it, the future of all Creative Commons apps.
Here's a sneak peek!
Say hello to CC Vocabulary!
CC Vocabulary is my GSoC 2019 project under the guidance of Hugo Solar and Sophine Clachar. Although not officially a mentor Kriti Godey has also been really supportive and helpful.
Work log
See GitHub commits for in-depth logs.
- Set up the Vue CLI 3 project
- Installed and customised Styleguidist
- Dockerised the setup for ease of setup and development
- Developed a home page for the project
- Developed simple components, called elements, like Heading and Paragraph
- Added design tokens and Theo workflow
- Converted all constants to design tokens: color, fonts and dimensions
- Wrote some, not all and definitely not enough, tests
- Added elements like Container and Badge
- Added complex components, called patterns, like Hello, Header and Footer
- Deployed styleguide to GitHub Pages
- Added color to patterns in a reusable way
- Added i18n capabilities and initiated translation to Hindi in the Footer
- Developed the Locale switcher and integrated with Styleguidist
Coming up
See proposal for in-depth goals.
- Integrate the library, gradually, with CC Search
- Add more generic components
- Go to point 1
- Develop a non-Vue vanilla CSS + JS based version of the library


Hi, there!
Here is rustech, a web server which packages
some important APIs of the TIS server of SUSTech.
Here are some tips for you to use it quickly!
1. "/cas_login?username=&password=" test whether
a account is available.
2. "/basic_info?username=&password=" Obtain basic
information of a student.
3. "/semester_gpa?username=&password=" Get the GPA
of all semester for specific student.
4. "/courses_grades?username=&password=" Obtain grades
of all the courses for specific student.
5. "/courses" Obtain all the courses from the TAO.
6. "/selected_courses?username=&password=&semester_year=&semester_no="
Obtain all the selected courses of specific student.
7. "/available_courses?username=&password=&semester_year=&semester_no=&courses_type="
Get the selectable courses for specific student.
8. "/select_course?username=&password=&semester_year=&semester_no=&course_id=&course_type=&points="
Select a class for student.
9. "/drop_course?username=&password=&semester_year=&semester_no=&course_id="
Drop a class for student.
10. "/update_points?username=&password=&semester_year=&semester_no=&course_id=&points="
Update the points of specific selected class for a student.
11. "/course_outline?username=&password=&outline_id=" Get
the outline of a class.
12. "/course_table?username=&password=&semester_year=&semester_no="
Get the course table of specific student
For more information, you can visit https://github.com/gdjs2/rustech.


 With his favorite Rammstone slug. He named his favourite slug bludgeon. Kord is a gear-head mechanic. Who fixes the team's mecha-beasts. As a cave troll, Kord naturally likes building machines. As well as upgrading equipment. Most of which are the Shane Gang's equipment. He likes to boast about his abilities as an engineer. And a builder. And dislikes to admit defeat if he cannot fix something.
And upgrades their blasters.
His favorite thing is to do is play practical jokes, usually on Pronto.
He's pretty easy-going, and it's rare to see any anger or rage in Kord.
This mountain of muscle has a big heart to match his giant biceps.
Kord's got a wicked slinging arm.
He loves making and upgrading machines so much.
One time he locked himself in the Shane Gang's garage as he upgraded their Mechas.
Even though he loves making and building machines.
He still states that he'd like to be a Slugslinger.

As he is a cave troll, Kord is a bulky and muscular figure that can overpower even the most heaviest objects. Wiki Fandom
Kord is fun-loving.  Despite looking fearsome. And dangerous. He has a really big heart. As part of the well-known Shane Gang. he is loyal to his friends. And will attempt to protect them everywhere they go. He sometimes gives them affectionate nicknames. For example, Kord will call Eli "Bro" on occasions. He rarely gets mad at any of his team members.
As a big-hearted troll.
He also loves to play practical jokes.
And is extremely easy going.
He likes to crack up jokes.
As well as acting whenever he tries to explain something.
Although he got frustrated when Eli kept beating him in practice.
Eli even states that his father told him that no one is more loyal.
Eli even states that his father told him that no one is more honest.
Eli even tells him that his father told him that no one is more brave.
Than a cave troll.
He has a somewhat stubborn attitude, as he doesn't like to admit defeat when he can't fix something.   He is also shown to love playing Video Games (with either Trixie or Eli) on his spare time, as well as playing and/or watching Slugball, his favourite sport. Wiki Fandom


Home
Persona: Elementary Tim
Persona: Pre-K Rem
Persona: Mama Mia
Conceptual Model & ERD
Kid Task Mama Wireframe
Your browser does not support the video tag.
Your browser does not support the video tag.
View wireframes for kid persona.
This is the interactive wireframe for kid.


Match Play. Red trails 4-5 to 7. Should Red double? If doubled, should White take?
pips Red=115 White=78
(CorrectAnswer= 0/0, ErrorScore= 0)
Position submitted by George Jacobs
What a deceptive position!
Despite the 32 shots this is nowhere near a double for money. Red will never be able to afford to hit loose once White enters so must rely on making points naturally. In addition any fly shot that White hits from the bar will be an immediate winner. It is nearly a double blunder to offer the cube in a money game.
At this match score the key thing is estimating gammons. If Red closes out both White checkers he will a gammon 40% of the time but because of the constraints already noted that isn't going to happen very often. Before rolling it out I estimated 10% gammons but even that turns out to be too high. The actual figure is just over 8%. White will win this position around 38% of the time. Those fly shots add up plus White can anchor and win with a late shot or by winning the race.
If you plug the percentages above into a match equity chart you find that the position is a clear double and a huge take. Dropping is worse than a quintuple blunder!!

Despite the 32 shots this is nowhere near a double for money. Red will never be able to afford to hit loose once White enters so must rely on making points naturally. In addition any fly shot that White hits from the bar will be an immediate winner. It is nearly a double blunder to offer the cube in a money game.
At this match score the key thing is estimating gammons. If Red closes out both White checkers he will a gammon 40% of the time but because of the constraints already noted that isn't going to happen very often. Before rolling it out I estimated 10% gammons but even that turns out to be too high. The actual figure is just over 8%. White will win this position around 38% of the time. Those fly shots add up plus White can anchor and win with a late shot or by winning the race.
If you plug the percentages above into a match equity chart you find that the position is a clear double and a huge take. Dropping is worse than a quintuple blunder!!
1. Cubeful 2-ply 8/1* Eq.: -0.440 0.412 0.128 0.007 - 0.588 0.293 0.011 2. Cubeful 2-ply 13/6 Eq.: -0.556 (-0.116) 0.393 0.102 0.006 - 0.607 0.306 0.007 3. Cubeful 2-ply 13/10 8/4 Eq.: -0.655 (-0.215) 0.383 0.113 0.007 - 0.617 0.343 0.013 4. Cubeful 0-ply 11/4 Eq.: -0.698 (-0.259) 0.376 0.106 0.005 - 0.624 0.346 0.012 5. Cubeful 0-ply 13/10 6/2* Eq.: -0.746 (-0.306) 0.373 0.108 0.007 - 0.627 0.352 0.025


If any NonTerminal symbol that belongs to the Production p match with the NonTerminal that
is represented by THIS, then the method sets the right and left structures of the NonTerminal
with the Production p.
If any Terminal symbol that belongs to the Production p match with the Terminal that
is represented by THIS, then the method sets the right structure of the Terminal
with the Production p.
Check whether the Strings are similar
As similar qualifies:
1) equal
2) both not empty and contained int one another
3) trigram metric greater than 0.5
Given a Collection of Elements and a token tk, the function splits the Collection in severals
subcollections in the following way:
1) If for example the Collection is cl = abcTKdeTKa, and the token is TK, the function splits cl in: "abc",
"de" and "a".
2) If for example the Collection is cl = TKabc, and the token is TK, the function splits cl in: NULL.
3) If for example the Collection is cl = TKabcTK, and the token is TK, the function splits cl in: "abc".
4) If for example the Collection is cl = abc, and there isn't a token, the function splits cl in: NULL.
Given a Collection of Elements and the tokens tk1 and tk2, the function splits the Collection in severals
pairs of subcollections in the following way:
1) If for example the Collection is cl = TK1abcTK2deTK1geTK2hf, and the tokens are TK1 and TK2, the function
splits cl in: {"abc" , "de"} and {"ge", "hf"}.
2) If for example the Collection is cl = TK1abcTK2, and the tokens are TK1 and TK2, the function splits cl
in: {"abc" , NULL}.
3) If for example the Collection is cl = abcTK1ggTK2rr, and the tokens are TK1 and TK2, the function splits
cl in: {"gg" , "rr"}.


Cookie Store information Location Minimum Customers Per Hour Maximum Customers Per Hour Average # of Cookies Per Customer Enter


ppmflash(1) ppmflash(1) NAME ppmflash - brighten a picture up to complete white-out SYNOPSIS ppmflash flashfactor [ppmfile] DESCRIPTION Reads a portable pixmap as input. Increases its brightness by the speci‐ fied flashfactor up to a total white-out image. The flashfactor may be in the range from 0.0 (original picture's brightness) to 1.0 (full white- out, The Second After). As pnmgamma does not do the brightness correction in the way I wanted it, this small program was written. This program is similar to ppmbrighten , but not exactly the same. SEE ALSO ppm(5), ppmdim(1), pnmgamma(1), ppmbrighten(1) AUTHOR Copyright (C) 1993 by Frank Neumann 16 November 1993 ppmflash(1)


Trump backing off banning vaping flavours popular with teens in U.S.
by Jonathan Lemire and Darlene Superville, The Associated PressWASHINGTON -- U.S. President Donald Trump is backing away from the idea of banning most flavoured e-cigarettes.
Trump announced a proposed ban in September, saying he wanted parents to be aware of what a problem vaping had become among teens. He made the announcement in the presence of first lady Melania Trump, who does not believe e-cigarettes should be available to children.
But two White House and campaign officials say Trump has since grown reluctant to move forward after becoming convinced that such a step could alienate voters he needs for re-election who would be financially or otherwise affected by such a ban.
The officials were not authorized to speak publicly about private conversations.
Lobbyists, conservative groups and Republican lawmakers have also warned Trump that a vaping crackdown could cost him with voters.


Creates a new application under a website.
Install-IisApplication [-SiteName] <String> [-VirtualPath] <String> [-PhysicalPath] <String> [[-AppPoolName] <String>] [-PassThru] [<CommonParameters>]
Creates a new application at VirtualPath
under website SiteName
running the code found on the file system under PhysicalPath
, i.e. if SiteName is is example.com
, the application is accessible at example.com/VirtualPath
. If an application already exists at that path, it is removed first. The application can run under a custom application pool using the optional AppPoolName
parameter. If no app pool is specified, the application runs under the same app pool as the website it runs under.
Beginning with Carbon 2.0, returns a Microsoft.Web.Administration.Application
object for the new application if one is created or modified.
Beginning with Carbon 2.0, if no app pool name is given, existing application's are updated to use DefaultAppPool
.
Beginning with Carbon 2.0.1, this function is available only if IIS is installed.
| Name | Type | Description | Required? | Pipeline Input | Default Value |
|---|---|---|---|---|---|
| SiteName | String | The site where the application should be created. |
true | false | |
| VirtualPath | String | The name of the application. |
true | false | |
| PhysicalPath | String | The path to the application. |
true | false | |
| AppPoolName | String | The app pool for the application. Default is |
false | false | |
| PassThru | SwitchParameter | Returns IIS application object. This switch is new in Carbon 2.0. |
false | false | False |
Install-IisApplication -SiteName Peanuts -VirtualPath CharlieBrown -PhysicalPath C:\Path\To\CharlieBrown -AppPoolName CharlieBrownPool
Creates an application at Peanuts/CharlieBrown
which runs from Path/To/CharlieBrown
. The application runs under the CharlieBrownPool
.
Install-IisApplication -SiteName Peanuts -VirtualPath Snoopy -PhysicalPath C:\Path\To\Snoopy
Create an application at Peanuts/Snoopy, which runs from C:\Path\To\Snoopy. It uses the same application as the Peanuts website.


The Problem
This is the first post about our project. More will be updated as time passes
Executive Summary
We seek to build a new experience, Microsoft Encounter, a microsite of the Microsoft Learn website, focused on educating
users and allowing them to achieve their personal development goals while fostering the adoption of Microsoft products,
therefore, building brand loyalty. Azure allows for the building, testing, and distribution of applications, services,
and is a valuable resource for developers around the world. Currently, their platform provides limited education and
instruction for new and possibly current users because of the disorganization of the documentation. Microsoft Learn aims
to provide educational materials for many products, not just Azure, however, the current content is not specifically
curated for findability and reliability for its users to be able to find a streamlined process in navigating the
website.
Learn is built off of Microsoft Docs, an established platform of publicly modifiable and shared content
surrounding their products. Large numbers of different documentations exist within different sectors of Microsoft and
there isn’t a concrete way that it is currently architectured. Roughly 70 million developers a month go into Docs to use
the platform and the resources within it. However, Microsoft had invested a lot of time, money, and effort into the
Microsoft Learn site as a platform to streamline learnability, usability, and make it easier for the 70 million users to
access the content, but the Learn site doesn’t get much traffic.
Our sponsors have asked us to look at this issue from a
student perspective. Students are a primary audience of any new technology, as they are the industry leaders of
tomorrow. Our goal is to work with our sponsor to be able to serve undergraduate students at the University of
Washington.
Our sponsor said that "If you can build loyalty early on, they become lifelong customers, however, in order
to establish that, the company must first build a product they can use more reliably, leading them to trust the company
and their products.”
Our sponsors want to get the content to be easily found and organized. The initial research our
sponsors have done gave them a lot of bad scores about findability. Their project managers and higher-level stakeholders
have done nothing to fix findability.
Our sponsors want us to look at this problem through the lens of an undergraduate
student. They want to see how they can reach both technical and non-technical students to use their content so that they
can build lifetime brand recognition and loyalty on their Learn and Docs platforms. By filling this content-gap, we will
be able to connect students to these Microsoft resources and provide them with the skills to become adept users, thereby
turning them into lifelong customers.
The A-Pi Team
We are Informatics Students working with the Microsoft Azure's IA team
Godgiven Grogan
UX Architect
UX/UI Designer
Project Manager
Jack Lucas Chang
Data Scientist
Product Anaylst
UX Researcher
Simran Kota
Data Scientist
Developer
UX Researcher
Brendan Jacobsen
UI Designer
Content Strategist
Information Architect


User Created!
Details
Fullname: Olu
Username: Charles
Password: charley
User type: Buyer
User Activated: Yes
Logged In: Click to Log Out
SearchFullname: Olu
Username: Charles
Password: charley
User type: Buyer
User Activated: Yes


Choose a sedan for its affordability and excellent fuel economy, Idealfor cruising in the city or on your next road trip
Learn MoreTake on SUV for its spacious interior, power, and versatility, Perfect for your next family vacation and off-road adventures.
Learn MoreCruise in the best car brands without the bloated prices. Enjoy the enhanced comfort of a luxury rental and arrive in style
Learn More


If you were looking for the Sands Research group's page, please note that it has been relocated to http://pdcc.ntu.edu.sg/sands
(They were kind enough to let us freeload on their server for the Cloud Storage Aggregator project).
If you weren't looking for Sands, simply ignore this message.
Oh no! We couldn't find the page you were looking for!
Try checking the URL for errors and then hit the refresh button or head back to the homepage!


← Yesterday
Tomorrow →
New Category
Attention! Your Daily Scheduler
Do you wish to delete the entire list, or just the children?


Basket orders are a feature provided by Zerodha Kite , where you can place multiple orders at one time. This is simply a visual tool built on top of Kite Publisher . All orders are executed within your own Kite account and we do not store any order placement data.
In the textbox below, you can either enter orders in comma separated format or paste from any spreadsheet software and click the → button to place a basket order on Kite.


{% extends "base.html" %} {% block head %}
Your transaction has been processed successfully. Now what?
{{ error}}
It's that easy.
Click the button to pay.
Pay to: {{ dest | safe }}
Amount: ${{ amount | safe }}
Account Balance: ${{ user.balance}} {% if not user.balance - amount >= 0 %}Not Enough{% endif %}


A soft night breeze stirred across the small town of Eianrod, then faded. Sitting on the stone rail of the wide flat bridge in the heart of the town, Rand supposed the breeze was hot, yet it hardly felt so after the Waste. Warm for nighttime perhaps, but not enough to make him unbutton his red coat. The river below him had never been large, and was half its normal width now, yet he still enjoyed watching the water flow north, moonshadows cast by scudding clouds playing across the darkly glittering surface. That was why he was out here in the night, really; to look at running water for a time. His wards were set, surrounding the Aiel encampment that itself surrounded the town. The Aiel themselves kept a watch a sparrow could not pierce unseen. He could waste an hour being soothed by the flow of a river.
It was surely better than another night where he had to order Moiraine to leave so he could study with Asmodean. She had even taken to bringing his meals to him and talking while he ate, as if she meant to cram everything she knew into his head before they reached the city of Cairhien. He could not face her begging to remain—actually begging!—as she had the previous night. For a woman like Moiraine, that behavior was so unnatural that he had wanted to agree simply to stop it. Which was very likely why she had done it. Much better an hour listening to the quiet liquid ripplings of the river. With luck, she would have given up on him for tonight.
The eight or ten paces of clay between water and weeds on both sides below him was dried and cracked. He peered up at the clouds crossing the moon. He could try to make those clouds give rain. The town’s two fountains were both dry, and dust lay in a third of the wells not fouled beyond cleaning. Try was the word, though. He had made it rain once; remembering how was the trick. If he managed that, then he could try not to make it a drowning deluge and a tree-snapping windstorm this time.
Asmodean would be no help; he did not know much about weather, it seemed.  Once he had thought that the Forsaken knew everything, that they were all but omnipotent. But if the others were like Asmodean, they had ignorances as well as weaknesses. It might actually be that he already knew more of some things than they. Than some of them, at least. The problem would be finding out who. Semirhage was almost as poor at handling weather as Asmodean.
He shivered as if this were night in the Three-fold Land. Asmodean had never told him that. Better to listen to the water and not think, if he meant to sleep at all tonight.
Sulin approached him, the shoufa around her shoulders so it uncovered her short white hair, and leaned on the railing. The wiry Maiden was armed for battle, bow and arrows, spears and knife and buckler. She had taken command of his bodyguard tonight. Two dozen more Far Dareis Mai squatted easily on the bridge ten paces away. “An odd night,” she said. “We were gambling, but suddenly everyone was throwing nothing but sixes.”
“I am sorry,” he told her without thinking, and she gave him a peculiar look. She did not know, of course; he had not spread it about. The ripples he gave off as ta’veren spread out in odd, random ways. Even the Aiel would not want to be within ten miles of him, if they knew.
The ground had given way beneath three Stone Dogs today, dropping them into a viper pit, but none of the dozens of bites had found anything but cloth. He knew that had been him, bending chance. Tal Nethin, the saddlemaker, had survived Taien to trip on a stone this very noon and break his neck falling on flat, grassy ground. Rand was afraid that had been him, too. On the other hand, Bael and Jheran had mended the blood feud between Shaarad and Goshien while he was with them, eating a midday meal of dried meat on the move. They still did not like each other, and hardly seemed to understand what they had done, but it was done, with pledges and water oaths given, each man holding the cup for the other to drink. To Aiel, water oaths were stronger than any other; it might be generations before Shaarad and Goshien so much as raided each other for sheep or goats or cattle.
He had wondered if those random effects would ever work in his favor; maybe this was as close as it came. What else had happened today that might be laid at his feet, he did not know; he never asked, and would as soon not hear. The Baels and Jherans could only partly make up for the Tal Nethins.
“I’ve not seen Enaila or Adelin for days,” he said. It was as good a change of subject as any. That pair in particular had seemed to be jealous of their places guarding him. “Are they ill?”
If anything, the look Sulin gave him was even more peculiar. “They will return when they learn to stop playing with dolls, Rand al’Thor.”
He opened his mouth, then closed it again. Aiel were strange—Aviendha’s lessons often made them more so, not less—but this was ridiculous. “Well, tell them they are grown women and they ought to act it.”
Even by moonlight he could tell that her smile was pleased. “It shall be as the Car’a’carn wishes.” What did that mean? She eyed him a moment, lips pursed thoughtfully. “You have not eaten yet tonight. There is still enough food for everyone, and you will not fill one belly by going hungry yourself. If you do not eat, people will worry that you are ill. You will become ill.”
He laughed softly, a hoarse wheeze. The Car’a’carn one minute, and the next . . . If he did not fetch something to eat, Sulin would probably go get it for him. And try to feed him to boot. “I will eat. Moiraine must be in her blankets by now.” This time her, odd look was satisfying; for a change he had said something that she did not understand.
As he swung his feet down, he heard the ring of horses’ hooves walking down the stone-paved street toward the bridge. Every Maiden was upright in an instant, face veiled; half nocked arrows. His hand went to his waist by instinct, but the sword was not there. The Aiel felt strange enough about him riding a horse and carrying the thing at his saddle; he had not seen any need to offend their customs more by wearing it. Besides, there were not many horses, and they were coming at a walk.
When they appeared, surrounded by an escort of fifty Aiel, the riders numbered fewer than twenty, slumping in their saddles dejectedly. Most wore rimmed helmets and Tairen coats with puffy, striped sleeves beneath their breastplates. The pair in the lead had ornately gilded cuirasses, and large white plumes attached to the front of their helmets, and the stripes on their sleeves had the glisten of satin in the moonlight. Half-a-dozen men at the rear, though, shorter and slighter than the Tairens, two with small banners called con on short staffs harnessed to their backs, wore dark coats and helmets shaped like bells cut away to expose their faces. Cairhienin used the banners to pick out officers in battle, and also to mark a lord’s personal retainers.
The Tairens with plumes stared when they saw him, exchanged startled glances, then scrambled down to come kneel before him, helmets under their arms. They were young, little older than he, both with dark beards trimmed to neat points in the fashion of Tairen nobility. Dents marred their breastplates, and the gilding was chipped; they had been crossing swords somewhere. Neither as much as glanced at the Aiel surrounding them, as if when ignored they would disappear. The Maidens unveiled, though they looked no less ready to put spear or arrow through the kneeling men.
Rhuarc followed the Tairens, with a gray-eyed Aiel younger and slightly taller than he, and stood behind. Mangin was of the Jindo Taardad, and one of those who had gone to the Stone of Tear. Jindo had brought in the riders.
“My Lord Dragon,” the plump, pink-cheeked lordling said, “burn my soul, but have they taken you prisoner?” His companion, jug ears and potato nose making him look a farmer despite his beard, kept sweeping lanky hair from his forehead nervously. “They said they were taking us to some Dawn fellow. The Car’a’carn. Means something about chiefs, if I remember what my tutor said. Forgive me, my Lord Dragon. I am Edorion of House Selorna, and this is Estean of House Andiama.”
“I am He Who Comes With the Dawn,” Rand told them quietly. “And the Car’a’carn.” He had them placed now: young lords who had spent their time drinking, gambling and chasing women when he was in the Stone. Estean’s eyes nearly popped out of his face; Edorion looked as surprised for a moment, then nodded slowly, as if he suddenly saw how it made sense. “Stand. Who are your Cairhienin companions?” It would be interesting to meet Cairhienin who were not running for their lives from the Shaido, and any other Aiel they saw. For that matter, if they were with Edorion and Estean, they might be the first supporters he had met in this land. If the two Tairens’ fathers had followed his orders. “Bring them forward.”
Estean blinked in surprise as he rose, but Edorion barely paused in turning to shout, “Meresin! Daricain! Come here!” Much like calling dogs. The Cairhienins’ banners bobbed as they dismounted slowly.
“My Lord Dragon.” Estean hesitated, licking his lips as though thirsty. “Did you . . . Did you send the Aiel against Cairhien?”
“They’ve attacked the city, then?”
Rhuarc nodded, and Mangin said, “If these are to be believed, Cairhien still holds. Or did three days ago.” There was little doubt that he did not think it still did, and less that he cared about a city of treekillers.
“I did not send them, Estean,” Rand said as they were joined by the two Cairhienin, who knelt, doffing their helmets to reveal men of an age with Edorion and Estean, their hair shaved back in line with their ears and their dark eyes wary. “Those who attack the city are my enemies, the Shaido. I mean to save Cairhien if it can be saved.”
He had to go through the business of telling the Cairhienin to rise; his time with the Aiel had almost made him forget the habit this side of the Spine of the World, bowing and kneeling right and left. He had to ask for introductions, too, and the Cairhienin gave them themselves. Lieutenant Lord Meresin of House Daganred—his con was all wavy vertical lines of red and white—and Lieutenant Lord Daricain of House Annallin, his con covered with small squares of red and black. It was a surprise that they were lords. Though lords commanded and led soldiers in Cairhien, they did not shave their heads and become soldiers. Or had not; much had changed, apparently.
“My Lord Dragon.” Meresin stumbled a bit saying that. He and Daricain were both pale, slender men, with narrow faces and long noses, but he was a bit the heavier. Neither looked as if he had had much to eat lately. Meresin rushed on as if afraid of being interrupted. “My Lord Dragon, Cairhien can hold. For days yet, perhaps as many as ten or twelve, but you must come quickly if you are to save it.”
“That is why we came out,” Estean said, shooting Meresin a dark look. Both Cairhienin returned it, but their defiance was tinged with resignation. Estean raked stringy hair from his forehead. “To find help. Parties have been sent in every direction, my Lord Dragon.” He shivered despite the sweat on his brow, and his voice turned distant and hollow. “There were more of us when we started. I saw Baran go down, screaming with a spear through his guts. He’ll never turn a card at chop again. I could use a mug of strong brandy.”
Edorion turned his helmet in gauntleted hands, frowning. “My Lord Dragon, the city can hold a while longer, but even if these Aiel will fight those, the question is, can you bring them there in time? I think ten or twelve days is a more than generous estimate, myself. In truth, I only came because I thought dying with a spear through me would be better than being taken alive when they made it over the walls. The city is packed with refugees who fled ahead of the Aiel; there isn’t a dog or a pigeon left in the city, and I doubt there will be a rat left soon. The one good thing is that no one seems to be worrying very much about who will take the Sun Throne, not with this Couladin outside.”
“He called on us to surrender to He Who Comes With the Dawn, on the second day,” Daricain put in, earning a sharp look from Edorion for the interruption.
“Couladin has some sport with prisoners,” Estean said. “Out of bowshot, but where anyone on the walls can see. You can hear them screaming, too. The Light burn my soul, I don’t know whether he is trying to break our will or simply likes it.  However safe Cairhien is. Only peasants, but . . . ” He trailed off and swallowed hard, as if he had just remembered what Rand’s opinions were of “only peasants.” Rand just looked at him, but he seemed to shrivel, and muttered under his breath about brandy.
Edorion leaped into the momentary silence. “My Lord Dragon, the point is that the city can hold until you come, if you can come quickly.  ”
“Flames nearly took the city,” Estean interjected. The Foregate, a city in itself outside the walls of Cairhien, had been mostly wood, as Rand remembered. “Would have been disaster if the river was not right there.”
The other Tairen went on right over him. “ . . . but Lord Meilan has the defense well planned, and the Cairhienin appear to be keeping their backbones for the time.” That earned him frowns from Meresin and Daricain that he either did not see or pretended not to. “Seven days with luck, perhaps eight at most. If you can . . . ” A heavy sigh abruptly seemed to deflate Edorion’s plumpness. “I did not see one horse,” he said as if to himself. “The Aiel do not ride. You will never be able to move men afoot so far in time.”
“How long?” Rand asked Rhuarc.
“Seven days” was the reply. Mangin nodded, and Estean laughed.
“Burn my soul, it took us as long to reach here on horses. If you think you can make the return in the same afoot, you must be . . . ” Becoming aware of the Aiel eyes on him, Estean scrubbed the hair from his face. “Is there any brandy in this town?” he muttered.
“It isn’t how fast we can make it,” Rand said quietly, “but how fast you can, if you dismount some of your men and use their horses for spares. I want to let Meilan and Cairhien know that help is on the way. But whoever goes will have to be sure he can keep his mouth shut if the Shaido take him. I do not intend to let Couladin know any more than he can learn on his own.” Estean went whiter in the face than the Cairhienin.
Meresin and Daricain were on their knees together, each seizing one of Rand’s hands to kiss. He let them, with as much patience as he could find; one bit of Moiraine’s advice that had the ring of common sense was not to offend people’s customs, however strange or even repulsive, unless you absolutely had to, and even then think twice.
“We will go, my Lord Dragon,” Meresin said breathlessly. “Thank you, my Lord Dragon. Thank you. Under the Light, I vow I will die before revealing a word to any but my father or the High Lord Meilan.”
“Grace favor you, my Lord Dragon,” the other added.  I am your man to the death.” Rand let Meresin say that he also was Rand’s man before taking his hands back firmly and telling them to stand. He did not like the way they were looking at him. Edorion had called them like hounds, but men should not look at anyone as if they were dogs gazing at a master.
Edorion drew a deep breath, puffing his pink cheeks, and let it out slowly. “I suppose if I made it out in one piece, I can make it back in. My Lord Dragon, forgive me if I offend, but would you care to wager, say, a thousand gold crowns, that you can really come in seven days?”
Rand stared at him. The man was as bad as Mat. “I don’t have a hundred crowns silver, much less a thousand in—”
Sulin broke in. “He has it, Tairen,” she said firmly. “He will meet your wager, if you make it ten thousand by weight.”
Edorion laughed. “Done, Aiel. And worth every copper if I lose. Come to think, I’ll not live to collect if I win. Come, Meresin, Daricain.” It sounded as if he were summoning dogs to heel. “We ride.”
Rand waited until the three had made their bows and were halfway back to the horses before rounding on the white-haired Maiden. “What do you mean, I have a thousand gold crowns? I’ve never seen a thousand crowns, much less ten thousand.”
The Maidens exchanged glances as if he were demented; so did Rhuarc and Mangin. “A fifth of the treasure that was in the Stone of Tear belongs to those who took the Stone, and will be claimed when they can carry it away.” Sulin spoke as to a child, instructing it in the simple facts of everyday life. “As chief and battle leader there, one tenth of that fifth is yours. Tear submitted to you as chief by right of triumph, so one tenth of Tear is yours as well. And you have said we can take the fifth in these lands—a . . . tax, you called it.” She fumbled the word; the Aiel did not have taxes. “The tenth part of that is yours also, as Car’a’carn.”
Rand shook his head. In all of his talks with Aviendha, he had never thought to ask whether the fifth applied to him; he was not Aiel, Car’a’carn or no, and it had not seemed anything to do with him. Well, it might not be a tax, but he could use it as kings did taxes. Unfortunately, he had only the vaguest idea how that was. He would have to ask Moiraine; that was one thing she had missed in her lectures. Perhaps she thought it so obvious that he should know.
Elayne would have known what taxes were used for; it had certainly been more fun taking advice from her than from Moiraine. He wished he knew where she was. Still in Tanchico, probably; Egwene told him little more than a constant string of well-wishings. He wished he could sit Elayne down and make her explain those two letters. Maiden of the Spear or Daughter-Heir of Andor, women were strange. Except maybe Min. She had laughed at him, but she had never made him think she was speaking some strange language. She would not laugh, now. If he ever saw her again, she would run a hundred miles to get away from the Dragon Reborn.
Edorion dismounted all his men, taking one of their horses and stringing the others together by their reins, along with Estean’s. No doubt he was saving his own for the final sprint through the Shaido. Merisin and Daricain did the same with their men. Though it meant that the Cairhienin had only two spare mounts apiece, no one seemed to think they should have any of the Tairen horses. They clattered off together westward at a trot, with a Jindo escort.
Carefully not looking at anyone, Estean started to drift toward the soldiers standing uneasily in a circle of Aiel at the foot of the bridge. Mangin caught his red-striped sleeve. “You can tell us conditions inside Cairhien, wetlander.” The lumpy-faced man looked ready to faint.
“I am certain he will answer any questions you ask,” Rand said sharply, emphasizing the final word.
“They will only be asked,” Rhuarc said, taking the Tairen’s other arm. He and Mangin seemed to be holding the much shorter man up between them. “Warning the city’s defenders is well and good, Rand al’Thor,” Rhuarc went on, “but we should send scouts. Running, they can reach Cairhien as soon as those men on horses, and meet us coming back with word of how Couladin has disposed the Shaido.”
Rand could feel the Maiden’s eyes on him, but he looked straight at Rhuarc. “Thunder Walkers?” he suggested.
“Sha’mad Conde,” Rhuarc agreed. He and Mangin turned Estean—they were holding him up—and started toward the other soldiers.
“Ask!” Rand called after them. “He is your ally, and my liege man.” He had no idea whether Estean was that last or not—it was another thing to ask Moiraine; or even how much of an ally he really was—his father, the High Lord Torean, had plotted against Rand enough—but he would allow nothing close to Couladin’s ways.
Rhuarc turned his head and nodded.
“You tend your people well, Rand al’Thor.” Sulin’s voice was flat as a planed plank.
“I try,” he told her. He was not about to rise to the bait. Whoever went to scout the Shaido, some would not return, and that was that. “I think I will have something to eat now. And get some sleep.” It could not be much more than two hours to midnight, and sunrise still came early this time of year. The Maidens followed him, watching the shadows warily as if they expected attack, handtalk flickering among them. But then, Aiel always seemed to expect attack.


Software
|
Games
|
Documents
|
Wallpapers
|
Links
|
Mail
Games
Sorry nothing available so far, comming soon ...


SP5 - Cliff Sensors
Overview
Repeatedly approach and retreat from a cliff, test at various speeds.
Usage
- Align the left, centre or right sensor with an impending cliff.
- Configure the linear speed.
- Press start
- Robot will approach and retreat continuously (or until it falls off)
Tips
If doing cliff testing, you may need to reduce the speed. The cliff sensor reactive control is not in firmware, so there is some latency.


In machine learning, the ability of a model to predict continuous or real values based on a training dataset is called Regression. With a small dataset and some great python libraries, we can solve such a problem with ease.
In this blog post, we will learn how to solve a supervised regression problem using the famous Boston housing price dataset. Other than location and square footage, a house value is determined by various other factors. Let’s analyze this problem in detail and come up with our own machine learning model to predict a housing price.
Objectives
After reading this post, we will understand
- How to solve a supervised regression problem using python?
- How to analyze and visualize a regression dataset using seaborn and pandas?
- How to apply data transforms to the dataset that has different units?
- How to handle missing values in a dataset?
- How to find out the best regression model for our problem?
- How to understand which features are important to predict the target?
Dependencies
I assume you have basic knowledge in installing Python and its packages using pip or Anaconda. If not, please check my post on setting up the environment to do machine learning for linux and windows. To follow this tutorial, you need to have the following installed in your machine.
- pandas - To work with solid data-structures, n-dimensional matrices and perform exploratory data analysis.
- matplotlib - To visualize data using 2D plots.
- seaborn - To make 2D plots look pretty and readable.
- scikit-learn - To create machine learning models easily and make predictions.
Boston Housing Prices Dataset
In this dataset, each row describes a boston town or suburb. There are 506 rows and 13 attributes (features) with a target column (price).
The problem that we are going to solve here is that given a set of features that describe a house in Boston, our machine learning model must predict the house price. To train our machine learning model with boston housing data, we will be using scikit-learn’s boston dataset.
We will use pandas and scikit-learn to load and explore the dataset. The dataset can easily be loaded from scikit-learn’s datasets module using load_boston function.
1
2
3
4
5
import pandas as pd
from sklearn.datasets import load_boston
pd.options.display.float_format = '{:,.2f}'.format
dataset = load_boston()
There are four keys in this dataset using which we can access more information about the dataset. data, target, feature_names and DESCR are the four keys which could be accessed using keys() on the dataset variable.
1
print("[INFO] keys : {}".format(dataset.keys()))
1
[INFO] keys : dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename'])
There are 13 features and 1 target that are accessed using data key and target key. We can easily access the shape of features and target using shape.
1
2
print("[INFO] features shape : {}".format(dataset.data.shape))
print("[INFO] target shape : {}".format(dataset.target.shape))
1
2
[INFO] features shape : (506, 13)
[INFO] target shape : (506,)
The 13 column names are accessed using feature_names on the dataset which returns the unique attribute names. We can use these column names when we convert this dataset to a pandas dataframe later.
1
2
print("[INFO] feature names")
print(dataset.feature_names)
1
2
[INFO] feature names
['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO' 'B' 'LSTAT']
To know the description of each column name in this dataset, you can use DESCR to display the description of this dataset in a nutshell.
1
2
print("[INFO] dataset summary")
print(dataset.DESCR)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
[INFO] dataset summary
Boston House Prices dataset
===========================
Notes
------
Data Set Characteristics:
:Number of Instances: 506
:Number of Attributes: 13 numeric/categorical predictive
:Median Value (attribute 14) is usually the target
:Attribute Information (in order):
- CRIM per capita crime rate by town
- ZN proportion of residential land zoned for lots over 25,000 sq.ft.
- INDUS proportion of non-retail business acres per town
- CHAS Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)
- NOX nitric oxides concentration (parts per 10 million)
- RM average number of rooms per dwelling
- AGE proportion of owner-occupied units built prior to 1940
- DIS weighted distances to five Boston employment centres
- RAD index of accessibility to radial highways
- TAX full-value property-tax rate per $10,000
- PTRATIO pupil-teacher ratio by town
- B 1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town
- LSTAT % lower status of the population
- MEDV Median value of owner-occupied homes in $1000's
:Missing Attribute Values: None
:Creator: Harrison, D. and Rubinfeld, D.L.
This is a copy of UCI ML housing dataset.
http://archive.ics.uci.edu/ml/datasets/Housing
This dataset was taken from the StatLib library which is maintained at Carnegie Mellon University.
The Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic
prices and the demand for clean air', J. Environ. Economics & Management,
vol.5, 81-102, 1978. Used in Belsley, Kuh & Welsch, 'Regression diagnostics
...', Wiley, 1980. N.B. Various transformations are used in the table on
pages 244-261 of the latter.
The Boston house-price data has been used in many machine learning papers that address regression
problems.
**References**
- Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261.
- Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.
- many more! (see http://archive.ics.uci.edu/ml/datasets/Housing)
Analyze the dataset
We can easily convert the dataset into a pandas dataframe to perform exploratory data analysis. Simply pass in the dataset.data as an argument to pd.DataFrame(). We can view the first 5 rows in the dataset using head() function.
1
2
3
4
df = pd.DataFrame(dataset.data)
print("[INFO] df type : {}".format(type(df)))
print("[INFO] df shape: {}".format(df.shape))
print(df.head())
1
2
3
4
5
6
7
8
[INFO] df type : <class 'pandas.core.frame.DataFrame'>
[INFO] df shape: (506, 13)
0 1 2 3 4 5 6 7 8 9 10 11 12
0 0.01 18.00 2.31 0.00 0.54 6.58 65.20 4.09 1.00 296.00 15.30 396.90 4.98
1 0.03 0.00 7.07 0.00 0.47 6.42 78.90 4.97 2.00 242.00 17.80 396.90 9.14
2 0.03 0.00 7.07 0.00 0.47 7.18 61.10 4.97 2.00 242.00 17.80 392.83 4.03
3 0.03 0.00 2.18 0.00 0.46 7.00 45.80 6.06 3.00 222.00 18.70 394.63 2.94
4 0.07 0.00 2.18 0.00 0.46 7.15 54.20 6.06 3.00 222.00 18.70 396.90 5.33
We can also specify the column names columns of the dataframe using feature_names instead of the indexes shown above.
1
2
df.columns = dataset.feature_names
print(df.head())
1
2
3
4
5
6
CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX PTRATIO B LSTAT
0 0.01 18.00 2.31 0.00 0.54 6.58 65.20 4.09 1.00 296.00 15.30 396.90 4.98
1 0.03 0.00 7.07 0.00 0.47 6.42 78.90 4.97 2.00 242.00 17.80 396.90 9.14
2 0.03 0.00 7.07 0.00 0.47 7.18 61.10 4.97 2.00 242.00 17.80 392.83 4.03
3 0.03 0.00 2.18 0.00 0.46 7.00 45.80 6.06 3.00 222.00 18.70 394.63 2.94
4 0.07 0.00 2.18 0.00 0.46 7.15 54.20 6.06 3.00 222.00 18.70 396.90 5.33
We can also insert the target column in our main dataframe simply using the below code snippet.
1
2
df["PRICE"] = dataset.target
print(df.head())
1
2
3
4
5
6
CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX PTRATIO B LSTAT PRICE
0 0.01 18.00 2.31 0.00 0.54 6.58 65.20 4.09 1.00 296.00 15.30 396.90 4.98 24.00
1 0.03 0.00 7.07 0.00 0.47 6.42 78.90 4.97 2.00 242.00 17.80 396.90 9.14 21.60
2 0.03 0.00 7.07 0.00 0.47 7.18 61.10 4.97 2.00 242.00 17.80 392.83 4.03 34.70
3 0.03 0.00 2.18 0.00 0.46 7.00 45.80 6.06 3.00 222.00 18.70 394.63 2.94 33.40
4 0.07 0.00 2.18 0.00 0.46 7.15 54.20 6.06 3.00 222.00 18.70 396.90 5.33 36.20
We can check the datatype of each column using dtypes to make sure every column has numeric datatype. If a column has different datatype such as string or character, we need to map that column to a numeric datatype such as integer or float. For this dataset, luckily there is no such column.
1
print(df.dtypes)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CRIM float64
ZN float64
INDUS float64
CHAS float64
NOX float64
RM float64
AGE float64
DIS float64
RAD float64
TAX float64
PTRATIO float64
B float64
LSTAT float64
PRICE float64
dtype: object
Now, we will understand the statistical summary of the dataset using the describe() function. Using this function, we can understand the count, min, max, mean and standard deviation for each attribute (column) in the dataset. Each of these can also be displayed individually using df.count(), df.min(), df.max(), df.median() and df.quantile(q).
1
print(df.describe())
1
2
3
4
5
6
7
8
9
CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX PTRATIO B LSTAT PRICE
count 506.00 506.00 506.00 506.00 506.00 506.00 506.00 506.00 506.00 506.00 506.00 506.00 506.00 506.00
mean 3.59 11.36 11.14 0.07 0.55 6.28 68.57 3.80 9.55 408.24 18.46 356.67 12.65 22.53
std 8.60 23.32 6.86 0.25 0.12 0.70 28.15 2.11 8.71 168.54 2.16 91.29 7.14 9.20
min 0.01 0.00 0.46 0.00 0.39 3.56 2.90 1.13 1.00 187.00 12.60 0.32 1.73 5.00
25% 0.08 0.00 5.19 0.00 0.45 5.89 45.02 2.10 4.00 279.00 17.40 375.38 6.95 17.02
50% 0.26 0.00 9.69 0.00 0.54 6.21 77.50 3.21 5.00 330.00 19.05 391.44 11.36 21.20
75% 3.65 12.50 18.10 0.00 0.62 6.62 94.07 5.19 24.00 666.00 20.20 396.23 16.96 25.00
max 88.98 100.00 27.74 1.00 0.87 8.78 100.00 12.13 24.00 711.00 22.00 396.90 37.97 50.00
Correlation
Finding correlation between attributes is a highly useful way to check for patterns in the dataset. Pandas offers three different ways to find correlation between attributes (columns). The output of each of these correlation functions fall within the range [-1, 1].
- 1 - Positively correlated
- -1 - Negatively correlated.
- 0 - Not correlated.
To learn more about correlation, please read this wikipedia article. We will use df.corr() function to compute the correlation between attributes and sns.heatmap() function to visualize the correlation matrix.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# correlation between attributes
print("PEARSON CORRELATION")
print(df.corr(method="pearson"))
sns.heatmap(df.corr(method="pearson"))
plt.savefig("heatmap_pearson.png")
plt.clf()
plt.close()
print("SPEARMAN CORRELATION")
print(df.corr(method="spearman"))
sns.heatmap(df.corr(method="spearman"))
plt.savefig("heatmap_spearman.png")
plt.clf()
plt.close()
print("KENDALL CORRELATION")
print(df.corr(method="kendall"))
sns.heatmap(df.corr(method="kendall"))
plt.savefig("heatmap_kendall.png")
plt.clf()
plt.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
PEARSON CORRELATION
CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX PTRATIO B LSTAT PRICE
CRIM 1.00 -0.20 0.40 -0.06 0.42 -0.22 0.35 -0.38 0.62 0.58 0.29 -0.38 0.45 -0.39
ZN -0.20 1.00 -0.53 -0.04 -0.52 0.31 -0.57 0.66 -0.31 -0.31 -0.39 0.18 -0.41 0.36
INDUS 0.40 -0.53 1.00 0.06 0.76 -0.39 0.64 -0.71 0.60 0.72 0.38 -0.36 0.60 -0.48
CHAS -0.06 -0.04 0.06 1.00 0.09 0.09 0.09 -0.10 -0.01 -0.04 -0.12 0.05 -0.05 0.18
NOX 0.42 -0.52 0.76 0.09 1.00 -0.30 0.73 -0.77 0.61 0.67 0.19 -0.38 0.59 -0.43
RM -0.22 0.31 -0.39 0.09 -0.30 1.00 -0.24 0.21 -0.21 -0.29 -0.36 0.13 -0.61 0.70
AGE 0.35 -0.57 0.64 0.09 0.73 -0.24 1.00 -0.75 0.46 0.51 0.26 -0.27 0.60 -0.38
DIS -0.38 0.66 -0.71 -0.10 -0.77 0.21 -0.75 1.00 -0.49 -0.53 -0.23 0.29 -0.50 0.25
RAD 0.62 -0.31 0.60 -0.01 0.61 -0.21 0.46 -0.49 1.00 0.91 0.46 -0.44 0.49 -0.38
TAX 0.58 -0.31 0.72 -0.04 0.67 -0.29 0.51 -0.53 0.91 1.00 0.46 -0.44 0.54 -0.47
PTRATIO 0.29 -0.39 0.38 -0.12 0.19 -0.36 0.26 -0.23 0.46 0.46 1.00 -0.18 0.37 -0.51
B -0.38 0.18 -0.36 0.05 -0.38 0.13 -0.27 0.29 -0.44 -0.44 -0.18 1.00 -0.37 0.33
LSTAT 0.45 -0.41 0.60 -0.05 0.59 -0.61 0.60 -0.50 0.49 0.54 0.37 -0.37 1.00 -0.74
PRICE -0.39 0.36 -0.48 0.18 -0.43 0.70 -0.38 0.25 -0.38 -0.47 -0.51 0.33 -0.74 1.00
SPEARMAN CORRELATION
CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX PTRATIO B LSTAT PRICE
CRIM 1.00 -0.57 0.74 0.04 0.82 -0.31 0.70 -0.74 0.73 0.73 0.46 -0.36 0.63 -0.56
ZN -0.57 1.00 -0.64 -0.04 -0.63 0.36 -0.54 0.61 -0.28 -0.37 -0.45 0.16 -0.49 0.44
INDUS 0.74 -0.64 1.00 0.09 0.79 -0.42 0.68 -0.76 0.46 0.66 0.43 -0.29 0.64 -0.58
CHAS 0.04 -0.04 0.09 1.00 0.07 0.06 0.07 -0.08 0.02 -0.04 -0.14 -0.04 -0.05 0.14
NOX 0.82 -0.63 0.79 0.07 1.00 -0.31 0.80 -0.88 0.59 0.65 0.39 -0.30 0.64 -0.56
RM -0.31 0.36 -0.42 0.06 -0.31 1.00 -0.28 0.26 -0.11 -0.27 -0.31 0.05 -0.64 0.63
AGE 0.70 -0.54 0.68 0.07 0.80 -0.28 1.00 -0.80 0.42 0.53 0.36 -0.23 0.66 -0.55
DIS -0.74 0.61 -0.76 -0.08 -0.88 0.26 -0.80 1.00 -0.50 -0.57 -0.32 0.25 -0.56 0.45
RAD 0.73 -0.28 0.46 0.02 0.59 -0.11 0.42 -0.50 1.00 0.70 0.32 -0.28 0.39 -0.35
TAX 0.73 -0.37 0.66 -0.04 0.65 -0.27 0.53 -0.57 0.70 1.00 0.45 -0.33 0.53 -0.56
PTRATIO 0.46 -0.45 0.43 -0.14 0.39 -0.31 0.36 -0.32 0.32 0.45 1.00 -0.07 0.47 -0.56
B -0.36 0.16 -0.29 -0.04 -0.30 0.05 -0.23 0.25 -0.28 -0.33 -0.07 1.00 -0.21 0.19
LSTAT 0.63 -0.49 0.64 -0.05 0.64 -0.64 0.66 -0.56 0.39 0.53 0.47 -0.21 1.00 -0.85
PRICE -0.56 0.44 -0.58 0.14 -0.56 0.63 -0.55 0.45 -0.35 -0.56 -0.56 0.19 -0.85 1.00
KENDALL CORRELATION
CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX PTRATIO B LSTAT PRICE
CRIM 1.00 -0.46 0.52 0.03 0.60 -0.21 0.50 -0.54 0.56 0.54 0.31 -0.26 0.45 -0.40
ZN -0.46 1.00 -0.54 -0.04 -0.51 0.28 -0.43 0.48 -0.23 -0.29 -0.36 0.13 -0.39 0.34
INDUS 0.52 -0.54 1.00 0.08 0.61 -0.29 0.49 -0.57 0.35 0.48 0.34 -0.19 0.47 -0.42
CHAS 0.03 -0.04 0.08 1.00 0.06 0.05 0.06 -0.07 0.02 -0.04 -0.12 -0.03 -0.04 0.12
NOX 0.60 -0.51 0.61 0.06 1.00 -0.22 0.59 -0.68 0.43 0.45 0.28 -0.20 0.45 -0.39
RM -0.21 0.28 -0.29 0.05 -0.22 1.00 -0.19 0.18 -0.08 -0.19 -0.22 0.03 -0.47 0.48
AGE 0.50 -0.43 0.49 0.06 0.59 -0.19 1.00 -0.61 0.31 0.36 0.25 -0.15 0.49 -0.39
DIS -0.54 0.48 -0.57 -0.07 -0.68 0.18 -0.61 1.00 -0.36 -0.38 -0.22 0.17 -0.41 0.31
RAD 0.56 -0.23 0.35 0.02 0.43 -0.08 0.31 -0.36 1.00 0.56 0.25 -0.21 0.29 -0.25
TAX 0.54 -0.29 0.48 -0.04 0.45 -0.19 0.36 -0.38 0.56 1.00 0.29 -0.24 0.38 -0.41
PTRATIO 0.31 -0.36 0.34 -0.12 0.28 -0.22 0.25 -0.22 0.25 0.29 1.00 -0.04 0.33 -0.40
B -0.26 0.13 -0.19 -0.03 -0.20 0.03 -0.15 0.17 -0.21 -0.24 -0.04 1.00 -0.15 0.13
LSTAT 0.45 -0.39 0.47 -0.04 0.45 -0.47 0.49 -0.41 0.29 0.38 0.33 -0.15 1.00 -0.67
PRICE -0.40 0.34 -0.42 0.12 -0.39 0.48 -0.39 0.31 -0.25 -0.41 -0.40 0.13 -0.67 1.00
Missing Values
Sometimes, in a dataset we will have missing values such as NaN or empty string in a cell. We need to take care of these missing values so that our machine learning model doesn’t break. To handle missing values, there are three approaches followed.
- Replace the missing value with a large negative number (e.g. -999).
- Replace the missing value with mean of the column.
- Replace the missing value with median of the column.
To find if a column in our dataset has missing values, you can use pd.isnull(df).any() which returns a boolean for each column in the dataset that tells if the column contains any missing value. In this dataset, there are no missing values!
1
print(pd.isnull(df).any())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CRIM False
ZN False
INDUS False
CHAS False
NOX False
RM False
AGE False
DIS False
RAD False
TAX False
PTRATIO False
B False
LSTAT False
PRICE False
dtype: bool
Once a dataset is available to us, it is always good to generate a brief report that gives lots of statistical information about the dataset so that you get to know the structure or nature of the dataset. You can use the below code snippet to generate a report like this.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
file_report = "boston_housing.txt"
with open(file_report, "w") as f:
f.write("Features shape : {}".format(df.drop("PRICE", axis=1).shape))
f.write("\n")
f.write("Target shape : {}".format(df["PRICE"].shape))
f.write("\n")
f.write("\nColumn names")
f.write("\n")
f.write(str(df.columns))
f.write("\n")
f.write("\nStatistical summary")
f.write("\n")
f.write(str(df.describe()))
f.write("\n")
f.write("\nDatatypes")
f.write("\n")
f.write(str(df.dtypes))
f.write("\n")
f.write("\nPEARSON correlation")
f.write("\n")
f.write(str(df.corr(method="pearson")))
f.write("\n")
f.write("\nSPEARMAN correlation")
f.write("\n")
f.write(str(df.corr(method="spearman")))
f.write("\n")
f.write("\nKENDALL correlation")
f.write("\n")
f.write(str(df.corr(method="kendall")))
f.write("\nMissing Values")
f.write("\n")
f.write(str(pd.isnull(df).any()))
Visualize the dataset
We will use two types of visualization strategy namely univariate plots and bivariate plots. As the name suggests, univariate plot is used to visualize a single column or an attribute whereas bivariate plot is used to visualize two columns or two attributes.
Box plot
A box-whisker plot is a univariate plot used to visualize a data distribution.
- The ends of whiskers are the maximum and minimum range of data distribution.
- The central line in the box is the median of the entire data distribution.
- The right and left edges in the box are the medians of data distribution to the right and left from the central median, respectively.
Understand more about box plots here.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# visualize the dataset
import matplotlib.pyplot as plt
import seaborn as sns
import random
import os
sns.set(color_codes=True)
colors = ["y", "b", "g", "r"]
cols = list(df.columns.values)
if not os.path.exists("plots/univariate/box"):
os.makedirs("plots/univariate/box")
# draw a boxplot with vertical orientation
for i, col in enumerate(cols):
sns.boxplot(df[col], color=random.choice(colors), orient="v")
plt.savefig("plots/univariate/box/box_" + str(i) + ".png")
plt.clf()
plt.close()
Using the box plots, we could see that there are outliers in the dataset for attributes such as CRIM, ZN, CHAS, DIS, PTRATIO, LSTAT, B and PRICE.
Density plot
Density plot is another univariate plot that draws a histogram of the data distribution and fits a Kernel Density Estimate (KDE).
A histogram is a graphical representation of a frequency distribution where data points are organized as bins, plotted with values along the x-axis and the count of data points in each bin along the y-axis.
A Kernel Density Plot shows a smooth representation of the data points.
1
2
3
4
5
6
7
8
9
if not os.path.exists("plots/univariate/density"):
os.makedirs("plots/univariate/density")
# draw a histogram and fit a kernel density estimate (KDE)
for i, col in enumerate(cols):
sns.distplot(df[col], color=random.choice(colors))
plt.savefig("plots/univariate/density/density_" + str(i) + ".png")
plt.clf()
plt.close()
1
2
3
4
5
6
7
8
9
10
11
12
if not os.path.exists("plots/multivariate"):
os.makedirs("plots/multivariate")
# bivariate plot between target and reason of absence
for i, col in enumerate(cols):
if (i == len(cols) - 1):
pass
else:
sns.jointplot(x=col, y="PRICE", data=df);
plt.savefig("plots/multivariate/target_vs_" + str(i) + ".png")
plt.clf()
plt.close()
Using the density plots, we can see that CRIM, AGE, B and ZN have exponential distribution. NOX, RM and LSTAT is probably having a skewed gaussian distribution. Also, we could notice that RAD and TAX have bimodal distribution.
Scatter plot
Scatter plot is used to understand relationship between two different attributes in the dataset. Below we have compared PRICE (target) vs each of the attribute in the dataset.
Pairplot
For each pair of features (columns) in the dataset, we can visualize the scatter plot for each pair along with the feature’s histogram along the diagonal in a single image using sns.pairplot() function.
1
2
3
4
5
# pairplot
sns.pairplot(df)
plt.savefig("plots/pairplot.png")
plt.clf()
plt.close()
We see a lot of structure in this dataset with outliers and different data distributions. Two key take aways from these visualizations are
- Data is not standardized (meaning there are different data distributions).
- Data is not normalized (meaning there are differing scales of data).
Training regression models
By looking at the dataset, we simply can’t suggest the best regression model for this problem. So, we will try out different regression models available in scikit-learn with a 10-fold cross validation method.
It means we split the training data into train and test data using a test_size parameter for 10-folds. Each fold will have different samples that are not present in other folds. By this way, we can throughly train our model on different samples in the dataset.
Before doing anything, we will split our boston housing prices dataframe df into features X and target Y.
1
2
3
4
X = df.drop("PRICE", axis=1)
Y = df["PRICE"]
print(X.shape)
print(Y.shape)
1
2
(506, 13)
(506,)
As we see different data distributions, we will standardize the dataset using StandardScaler function in scikit-learn. This is a useful technique where the attributes are transformed to a standard gaussian distribution with a mean of 0 and a standard deviation of 1.
1
2
3
from sklearn.preprocessing import StandardScaler, MinMaxScaler
scaler = MinMaxScaler().fit(X)
scaled_X = scaler.transform(X)
Now, we will split the data into train and test set. We can easily do this using scikit-learn’s train_test_split() function using a test_size parameter.
1
2
3
4
5
6
7
8
9
10
11
from sklearn.model_selection import train_test_split
seed = 9
test_size = 0.20
X_train, X_test, Y_train, Y_test = train_test_split(scaled_X, Y, test_size = test_size, random_state = seed)
print(X_train.shape)
print(X_test.shape)
print(Y_train.shape)
print(Y_test.shape)
1
2
3
4
(404, 13)
(102, 13)
(404,)
(102,)
Let’s dive into regression. We will use different regression models offered by scikit-learn to produce a baseline accuracy for this problem. We will use the MSE (Mean Squared Error) as the performance metric for the regression models.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Lasso
from sklearn.linear_model import ElasticNet
from sklearn.tree import DecisionTreeRegressor
from sklearn.neighbors import KNeighborsRegressor
from sklearn.svm import SVR
from sklearn.ensemble import AdaBoostRegressor
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import ExtraTreesRegressor
from sklearn.metrics import mean_squared_error
# user variables to tune
folds = 10
metric = "neg_mean_squared_error"
# hold different regression models in a single dictionary
models = {}
models["Linear"] = LinearRegression()
models["Lasso"] = Lasso()
models["ElasticNet"] = ElasticNet()
models["KNN"] = KNeighborsRegressor()
models["DecisionTree"] = DecisionTreeRegressor()
models["SVR"] = SVR()
models["AdaBoost"] = AdaBoostRegressor()
models["GradientBoost"] = GradientBoostingRegressor()
models["RandomForest"] = RandomForestRegressor()
models["ExtraTrees"] = ExtraTreesRegressor()
# 10-fold cross validation for each model
model_results = []
model_names = []
for model_name in models:
model = models[model_name]
k_fold = KFold(n_splits=folds, random_state=seed)
results = cross_val_score(model, X_train, Y_train, cv=k_fold, scoring=metric)
model_results.append(results)
model_names.append(model_name)
print("{}: {}, {}".format(model_name, round(results.mean(), 3), round(results.std(), 3)))
# box-whisker plot to compare regression models
figure = plt.figure()
figure.suptitle('Regression models comparison')
axis = figure.add_subplot(111)
plt.boxplot(model_results)
axis.set_xticklabels(model_names, rotation = 45, ha="right")
axis.set_ylabel("Mean Squared Error (MSE)")
plt.margins(0.05, 0.1)
plt.savefig("model_mse_scores.png")
plt.clf()
plt.close()
1
2
3
4
5
6
7
8
9
10
Linear : -23.794, 12.358
Lasso : -63.82, 20.646
ElasticNet : -69.362, 21.371
KNN : -26.366, 16.169
DecisionTree : -26.64, 13.894
SVR : -53.247, 22.157
AdaBoost : -13.846, 5.635
GradientBoost : -10.247, 5.328
RandomForest : -12.418, 6.976
ExtraTrees : -11.568, 7.065
Choosing the best model
Based on the above comparison, we can see that Gradient Boosting Regression model outperforms all the other regression models. So, we will choose it as the best regression model for this problem.
1
2
3
4
5
6
7
# create and fit the best regression model
best_model = GradientBoostingRegressor(random_state=seed)
best_model.fit(X_train, Y_train)
# make predictions using the model
predictions = best_model.predict(X_test)
print("[INFO] MSE : {}".format(round(mean_squared_error(Y_test, predictions), 3)))
1
[INFO] MSE : 9.961
Finally, we can see that Gradient Boosting Regression model achieved a mean squared error of 9.961 which means our model is able to predict correct values on test data with MSE of 9.961. We can visualize the predictions made by our best model and the original targets Y_test using the below code.
1
2
3
4
5
6
7
8
9
10
11
# plot between predictions and Y_test
x_axis = np.array(range(0, predictions.shape[0]))
plt.plot(x_axis, predictions, linestyle="--", marker="o", alpha=0.7, color='r', label="predictions")
plt.plot(x_axis, Y_test, linestyle="--", marker="o", alpha=0.7, color='g', label="Y_test")
plt.xlabel('Row number')
plt.ylabel('PRICE')
plt.title('Predictions vs Y_test')
plt.legend(loc='lower right')
plt.savefig("predictions_vs_ytest.png")
plt.clf()
plt.close()
We could still tune different regression models used in this example using scikit-learn’s GridSearchCV() function. By tuning, we mean trying out different hyper-parameters for each model. You can check this post to perform hyperparameter tuning.
Feature Importance
Once we have a trained model, we can understand feature importance (or variable importance) of the dataset which tells us how important each feature is, to predict the target. Figure 7 shows relative importance of different feature in the dataset made by our best model Gradient Boosting Regressor (GBR).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# plot model's feature importance
feature_importance = best_model.feature_importances_
feature_importance = 100.0 * (feature_importance / feature_importance.max())
sorted_idx = np.argsort(feature_importance)
pos = np.arange(sorted_idx.shape[0]) + .5
plt.barh(pos, feature_importance[sorted_idx], align='center')
plt.yticks(pos, dataset.feature_names[sorted_idx])
plt.xlabel('Relative Importance')
plt.title('Variable Importance')
plt.savefig("feature_importance.png")
plt.clf()
plt.close()
In case if you found something useful to add to this article or you found a bug in the code or would like to improve some points mentioned, feel free to write it down in the comments. Hope you found something useful here.